web前端防止xss 攻击

…衆ロ難τιáo~ 提交于 2019-12-28 05:23:21

对输出进行编码

在输出数据之前对潜在的威胁的字符进行编码、转义是防御XSS攻击十分有效的措施。如果使用好的话,理论上是可以防御住所有的XSS攻击的。

对所有要动态输出到页面的内容,通通进行相关的编码和转义。当然转义是按照其输出的上下文环境来决定如何转义的。

1> 作为body文本输出,作为html标签的属性输出:

比如:username</span>,<p><c:outvalue="{username}</span>, <p><c:out value="{username}"></c:out>

此时的转义规则如下:

< 转成 <

转成 >

& 转成 &

" 转成 "

’ 转成 &#39

2> javascript事件

<input type=“button” οnclick=‘go_to_url("${myUrl}");’ />

除了上面的那些转义之外,还要附加上下面的转义:

\ 转成 \

/ 转成 /

; 转成 ;(全角;)

3> URL属性

如果

确保:href 和 src 的值必须以 http://开头,白名单方式;不能有10进制和16进制编码字符。

  1. HttpOnly 与 XSS防御

XSS 一般利用js脚步读取用户浏览器中的Cookie,而如果在服务器端对 Cookie 设置了HttpOnly 属性,那么js脚本就不能读取到cookie,但是浏览器还是能够正常使用cookie。(下面的内容转自:http://www.oschina.net/question/12_72706)

一般的Cookie都是从document对象中获得的,现在浏览器在设置 Cookie的时候一般都接受一个叫做HttpOnly的参数,跟domain等其他参数一样,一旦这个HttpOnly被设置,你在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时 候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!