XSS的防御

HttpOnly:

浏览器将禁止页面的JavaScript访问带有HttpOnly属性的Cookie。httponly解决的是XSS后的Cookie劫持。给cookie添加httponly代码。

 

输入检查,输出检查:

使用编码或转义的方式。使用正则表达式对输入加以限制。

若输出到客户端或者解释器的数据来自不可信的数据源,则须对该数据进行相应的编码或转义:

HTML实体编码:

&——  &

<——  &lt;

>——  &gt;

"——  &quot;

'——  &#x27;

/—— &#x2F;

HTML属性编码:

除字母数字外,转义所有带有HTML实体&#xHH的字符;格式化,包括空格字符,(HH=十六进制值)

URL编码:

URL只能使用ASCII字符集的方式在internet发送,由于URL通常包含ASCII字符集以外的字符,需要转换URL为有效的ASCII格式。URL编码通过使用%后面跟两位十六进制数的方式来替换不安全的ASCII字符,编码标准可参考:http://www.w3schools.com/tags/ref_urlencode.asp

JavaScript编码:

出字母数字外,转义所有带有\uXXXX unicode转义格式的字符(X=整数)

CSS十六进制编码:

CSS转义支持\XX和\XXXXXX,如果紧接的下一字符也为转义序列时,使用两字符的转义可能会导致问题。有两个解决方案:(a)CSS转义之后增加一个空格(空格被CSS解析器忽略);(b)通过填补零的方式使用完整的CSS转义。

 

处理富文本:

在标签选择上使用白名单,避免使用黑名单。

 

防御DOM Based XSS:

 

 

(未完成)

 

posted on 2019-03-31 14:48  TFpI  阅读(172)  评论(0编辑  收藏  举报

导航