2016-05-25 12 views
0

セキュリティクラスの一部のサイトでXSSの脆弱性をテストしようとしています。なぜ次のページに挿入されたスクリプトが実行されないのかわかりません。基本的に、私は、入力フォームにいくつかの値を挿入すると、サーバーは、私はそれが理由CSPヘッダのだが、私はあまりにもわからないという疑いを持っている、この応答なぜJavaScriptコードが実行されないのですか?

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" conent="IE-edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>NECSTFeedback</title> 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
    <link href="/static/css.css" rel="stylesheet"> 
</head> 
<body> 
<div class="container"> 
    <div class="header clearfix"> 
     <h3 class="text-muted">The NECSTFeedback</h3> 
    </div> 

<h1>Report</h1> 
<p><b>Subject: </b>sk</p> 
<p><b>Sender: </b>as</p> 
<div class="rpt-content"> 
    <p><b>Message: </b></p> 
       <!-- This is my script --> 
       <script> alert('Hi')</script> 
</div> 

<p><b>Attachment: </b><a href="/attachment/58224c5bd967459c925a88eb21799384"></a></p> 

</div> 
</body> 
</html> 

で応答します。 Btw、ここにヘッダのリストがあります。

HTTP/1.1 200 OK 
Server: nginx 
Date: Wed, 25 May 2016 19:18:31 GMT 
Content-Type: text/html; charset=utf-8 
Transfer-Encoding: chunked 
Connection: keep-alive 
Content-Security-Policy: default-src 'self'; style-src 'self' https://maxcdn.bootstrapcdn.com/bootstrap/; font-src 'self' https://maxcdn.bootstrapcdn.com/bootstrap/ 
+0

さて、はい、あなたはCSPの仕組みを調べましたか?あなたは見つけることができるはずです。 – Bergi

答えて

2

私はそれが理由CSPヘッダのだという疑いを持っていますが、私もよく分かりません。確かに

Content-Security-Policy: default-src 'self'; style-src 'self' https://maxcdn.bootstrapcdn.com/bootstrap/; font-src 'self' https://maxcdn.bootstrapcdn.com/bootstrap/ 

はい。

コンテンツセキュリティポリシーの仕様says here

「安全ではない-インライン」はallowed script sourcesのリストにない場合は、[...]: ユーザエージェントは<script> elementからインラインスクリプトを実行しますたびに[...]、代わりにユーザエージェントはスクリプト[...]を実行してはいけません。

ヘッダーにあるselfは、間違いなくインラインスクリプトを許可しません。

+0

私は今、「unsafe-inline」指令をスキップしたと思います。したがって、 'default-src 'self'は基本的に' javascript'コードをこのページで実行する唯一の方法は、サーバー自体と同じドメインからのソースファイルからのものです。 – tigerjack89

+0

@ tigerjack89はい、正確です。 – Bergi

関連する問題