一、儘可能少將域名的domain設爲域名的根下面,減小分站xss漏洞對主站的影響;php
二、對輸入的數據進行過濾檢查:css
- public static String htmlSpecialChars(final String s) {
- String result = s;
- result = regexReplace("&", "&", result);
- result = regexReplace("\"", """, result);
- result = regexReplace("<", "<", result);
- result = regexReplace(">", ">", result);
- return result;
- }
注意:CSS的行爲方式也會有JavaScript的執行:html
<style type="text/css" >
#content { height: expression(alert('test xss') ); }
</style>java
若是要支持html能夠使用這個過濾器(附件,開源的)web
- 例子
- {
- final ArrayList<Attribute> span_atts = new ArrayList<Attribute>();
- Map<String, Pattern> allowedAttrValues = new HashMap<String, Pattern>();
- allowedAttrValues.put(「color」, Pattern.compile(「(#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}))」));
- allowedAttrValues.put(「font-weight」, Pattern.compile(「bold」));
- allowedAttrValues.put(「text-align」, Pattern.compile(「(center|right|justify)」));
- allowedAttrValues.put(「font-style」, Pattern.compile(「italic」));
- allowedAttrValues.put(「text-decoration」, Pattern.compile(「underline」));
- allowedAttrValues.put(「margin-left」, Pattern.compile(「[0-9]+px」));
- allowedAttrValues.put(「text-align」, Pattern.compile(「center」));
- span_atts.add(new Attribute(「style」, allowedAttrValues));
- vAllowed.put(「span」, span_atts);
- }
- {
- final ArrayList<Attribute> div_atts = new ArrayList<Attribute>();
- div_atts.add(new Attribute(「class」));
- div_atts.add(new Attribute(「align」));
- vAllowed.put(「div」, div_atts);
- }
- * 2. 調用相似這樣的函數String outHtml = HetaoBlogXssHTMLFilter.filter(sourceHtmlString);
三、針對圖片的上傳須要檢測是不是正確的圖片格式是不是僞格式 ,圖片服務器儘可能不開啓程序(java,php,.net)功能或對圖片格式不作程序解析;express
在Web應用程序側防護CSRF漏洞,通常都是利用referer判斷輸入端的url來源、或使用token或者使用JavaScript看不見的驗證碼;服務器