2017-02-10 8 views
0

I CORSフィルタの次の実装がありますはどのようにCORSフィルタは、XSS攻撃から私を守るん

@Singleton 
@Provider 
public class CORSFilter implements ContainerResponseFilter { 

    @Override 
    public void filter(ContainerRequestContext requestContext,  ContainerResponseContext responseContext) throws IOException { 
     final int ACCESS_CONTROL_MAX_AGE_IN_SECONDS = 12 * 60 * 60; 
     MultivaluedMap<String, Object> headers = responseContext.getHeaders(); 

     headers.add(ACCESS_CONTROL_ALLOW_ORIGIN, "*"); 
     headers.add(ACCESS_CONTROL_ALLOW_HEADERS, "origin, content-type, accept, authorization"); 
     headers.add(ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); 
     headers.add(ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS, HEAD"); 
     headers.add(ACCESS_CONTROL_MAX_AGE, ACCESS_CONTROL_MAX_AGE_IN_SECONDS); 

    } 
} 

出典:しかし

https://gist.github.com/yunspace/36b0546245c5348a34ed

、私はまだどのように理解していないがこれにより、XSSと、ブラウザが追加されたヘッダをどのように扱うのかが妨げられるはずです。このコードはどのようにXSS攻撃から私を守っていますか?

+1

あなたは、サーバーに任意の起源からの要求を受け入れるように指示しているので、そうではありません。そのフィルタを削除すると、ドメインから送信されたスクリプトだけがリクエストをサーバーに送信できます。 CORSはデフォルトであなたを保護します。このフィルタを追加すると、任意の送信元のスクリプトが要求を送信できるようになり、保護が解除されます。 –

+0

[Spring Data Rest and Cors]の可能な複製(http://stackoverflow.com/questions/31724994/spring-data-rest-and-cors) – Andremoniy

答えて

0

CORSはあなたをXSSから保護しません。

同一起点ポリシー(SOP)は、あるドメインが別のドメインからクライアント側のデータを取得できないようにします。

CORSでは、クライアント側のデータを得るために、他のドメインをホワイトリストに登録することができます。

XSSはこれを達成する攻撃です。

CORSを有効にしないと、SOPがデフォルトの「セキュア」モードになっているため、Webサイトがより安全になります。 CORSを有効にすると、SOPルールのセキュリティが緩和されます。

CORSが有効かどうかはXSSには関係ありません.XSSの脆弱性が存在する場合は、適切なエンコードで軽減し、コンテンツセキュリティポリシー(CSP)を実装する必要があります。

関連する問題