关于 XSS 攻击和 CSRF 攻击

XSS

跨站脚本攻击,Cross Site Script(XSS),XSS 攻击可以分为 3 类:反射型,存储型,基于 DOM XSS。

反射型

反射型 XSS 也叫做 “非持久型 XSS(Non-persistent XSS)”。

反射型 XSS 只是简单地把用户输入的数据“反射”给浏览器。也就是说,黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。

存储型

存储型 XSS 会把用户输入的数据“存储”在服务器端。这种 XSS 具有很强的稳定性。

基于 DOM XSS

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

XSS 防御

HTTPOnly

浏览器将禁止页面的 JavaScript 访问带有 HttpOnly 属性的 Cookie。所以我们需要在 http 的响应头 set-cookie 时设置 httpOnly,让浏览器知道不能通过 document.cookie 的方式获取到 cookie 内容。

输入检查

在 XSS 的防御上,输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如果发现存在特殊字符,则将这些字符过滤或者编码。

输出检查

一般来说,除富文本的输出外,在变量输出到 HTML 页面时,可以使用编码或转义的方式来防御 XSS 攻击。

参考链接