XSS的防御
一.设置Http-Only
如果Cookie设置了HttpOnly属性,XSS攻击会失败,因为JavaScript读取不到Cookie的值。
一个Cookie的使用过程如下:
Step1:浏览器向服务器发起请求,这时没有Cookie。
Step2:服务器返回时发送Set-Cookie头,向客户端浏览器写入Cookie。(此时可在Set-Cookie头中加入Http-Only属性)
Step3:在该Cookie到期前,浏览器访问该域下的所有页面,都将发送该Cookie。
HttpOnly是在Set-Cookie时被标记的。服务器可能会设置多个Cookie(多个key-value对),而HttpOnly可以有选择性地加在任何一个关键的Cookie值上。
二.对输入进行检查
对用户的输入,比如说填写用户名,邮箱等信息时进行白名单过滤,使攻击者无法构造攻击语句。
三.输出检查
一般来说,除了富文本的输出外,在变量输出到HTML页面时,可以使用HtmlEncode编码或转义的方式来防御XSS攻击。