2016-03-31 14 views
0

私たちのウェブサイトには検索フィールドがあり、セキュリティ研究者は、訪問者が完全なJavaScriptを実行しようとする可能性があるため、これがXSSエクスプロイトに公開されていることを知らせています。彼らは私たちにSimple URLのサンプルを送って、検索ページにJavaScriptアラートボックスを表示させた。URLパラメータはsearch?submitted = true & action = search & siteId = 2.9945 & freeText = 1 ";(/ XSSPOSED /); =」&ソート= publishedDate_descending & slotSearch =真JavaアプリケーションでXSS攻撃をブロックし、ユーザーがWebページ上でJavaScriptを実行できないようにするにはどうすればよいですか?

セキュリティ研究者は、すべてのデータが耳鼻咽喉科の引用符と難読化を使用して悪用を防止するために設定UTF8フラグの両方を持つPHPのにhtmlentitiesと同様の機能を通過する必要があることを助言しました。だから、htmlentitiesに相当するJavaがあるかどうかを調べたところ、Apache Commons LangのStringEscapeUtilsクラスからescapeHtml()とescapeJavaScript()メソッドが見つかりました。https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html escapeHtml()メソッドは<や>などのHTML文字をエスケープしますが、JavaScriptについてはあまりよく分かりません。 escapeJavaScriptメソッドは実際には、JavaScript自体を取り除くのではなく、JavaScript文字列ルールを使用して文字列内の文字をエスケープしているようです。

誰かが、JavaScriptがページに表示されるのを100%停止するソリューションを知っていますか?

+0

は周りを見て持って、文字列のサニタイズは、既に何度か議論されています。これはおそらく役立ちます:http://stackoverflow.com/questions/3413297/how-to-sanitize-html-code-in-java-to-prevent-xss-attacks?rq=1 – Slettal

答えて

0

Javaを使用していて、バックエンドで検証したい場合は、この例では、この例では、ユーザーが自分の名前の代わりに値を送信していないかどうかを確認します。

if (CommonUtility.checkValidate(firstName) || CommonUtility.checkValidate(lastName) || 
CommonUtility.checkValidate(newUserName)) { 
     response 
     .sendRedirect(PHConstants.CONTEXT_PATH 
      + "/login/registrationError.jsp"); 
     return; 
     } 


    public static boolean checkValidate(String name) { 
     if (null != name) { 
     String patternString = ".*javascript:.*|.*//.*|.*<.*|.*>.*"; 
     Pattern pattern = Pattern.compile(patternString); 
     Matcher matcher = pattern.matcher(name); 
     return matcher.matches(); 
     } 
     return false; 
    } 

は、我々はそれを特定のルールを追加することで、サーバ側で焼きURLを識別することができます。これはあなたの参照のための

コードサンプルRuleConfフォルダ内のconfファイルを追加することによって行われる。

SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=/notices/dummyNotifPage.jsp" "chain,phase:2,t:none,status:403,msg:'Generic javascript Injection prevention',severity:2" 
SecRule ARGS|QUERY_STRING "(<[^>]*>)" "status:403" 
  
SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=/notices/dummyNotifPage.jsp" "chain,phase:2,t:none,status:403,msg:'Generic javascript Injection prevention',severity:2" 
SecRule ARGS|QUERY_STRING "(?i)javascript:" "status:403" 
  
SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=" "chain,phase:2,t:none,status:403,msg:'Check for double slashes in url parameter',severity:2" 
SecRule ARGS|QUERY_STRING "/{2}" "status:403" 
+1

しないでください、 xss攻撃を難読化し、xss正規表現フィルタをトリックする無数の方法があります。代わりにOWASP AntiSamyのような確立されたライブラリを使用してください。https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project – Slettal

関連する問題