xss漏洞和csrf漏洞防護

xss防護:

一、儘可能少將域名的domain設爲域名的根下面,減小分站xss漏洞對主站的影響;php

二、對輸入的數據進行過濾檢查:css

  
  
  
  
  1. public static String htmlSpecialChars(final String s) { 
  2.       String result = s; 
  3.       result = regexReplace("&", "&", result); 
  4.       result = regexReplace("\"", """, result); 
  5.       result = regexReplace("<", "&lt;", result); 
  6.       result = regexReplace(">", "&gt;", result); 
  7.       return result; 
  8.   } 

注意:CSS的行爲方式也會有JavaScript的執行:html

<style type="text/css" >
#content { height: expression(alert('test xss') ); }
</style>java

若是要支持html能夠使用這個過濾器(附件,開源的)web

  
  
  
  
  1. 例子 
  2. final ArrayList<Attribute> span_atts = new ArrayList<Attribute>(); 
  3. Map<String, Pattern> allowedAttrValues = new HashMap<String, Pattern>(); 
  4. allowedAttrValues.put(「color」, Pattern.compile(「(#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}))」)); 
  5. allowedAttrValues.put(「font-weight」, Pattern.compile(「bold」)); 
  6. allowedAttrValues.put(「text-align」, Pattern.compile(「(center|right|justify)」)); 
  7. allowedAttrValues.put(「font-style」, Pattern.compile(「italic」)); 
  8. allowedAttrValues.put(「text-decoration」, Pattern.compile(「underline」)); 
  9. allowedAttrValues.put(「margin-left」, Pattern.compile(「[0-9]+px」)); 
  10. allowedAttrValues.put(「text-align」, Pattern.compile(「center」)); 
  11. span_atts.add(new Attribute(「style」, allowedAttrValues)); 
  12. vAllowed.put(「span」, span_atts); 
  13. final ArrayList<Attribute> div_atts = new ArrayList<Attribute>(); 
  14. div_atts.add(new Attribute(「class」)); 
  15. div_atts.add(new Attribute(「align」)); 
  16. vAllowed.put(「div」, div_atts); 
  17. * 2. 調用相似這樣的函數String outHtml = HetaoBlogXssHTMLFilter.filter(sourceHtmlString); 

三、針對圖片的上傳須要檢測是不是正確的圖片格式是不是僞格式 ,圖片服務器儘可能不開啓程序(java,php,.net)功能或對圖片格式不作程序解析;express

防護CSRF:

    在Web應用程序側防護CSRF漏洞,通常都是利用referer判斷輸入端的url來源、或使用token或者使用JavaScript看不見的驗證碼;服務器

相關文章
相關標籤/搜索