跨站脚本攻击(Cross Site Scripting)
说明:是最常见的攻击 WEB 网站方法,攻击者通过注入非法的 html 标签或者 javascript 等代码,从而控制用户浏览器。
防御:
- 在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息
- 对用户输入的数据进行检查过滤
- 显示时,将脚本类特殊字符转换成文本显示
跨站请求伪造(Cross Site Request Forgeries)
说明:冒充用户发起请求(在用户不知情的情况下), 完成一些违背用户意愿的事情
防御:
- 强制交互:通过验证码等手段要求用户必须与应用进行交互,才能完成最终请求
- token 验证机制
- 使用post方法进行请求
- 服务器限制特定请求来源
点击劫持(ClickJacking)
说明:大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,触发点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义;
防御:
-
设置X-Frame-Options,可选的值有:
DENY:浏览器会拒绝当前页面加载任何frame页面;
SAMEORIGIN:frame页面的地址只能为同源域名下的页面;
ALLOW-FROM origin:允许frame加载的页面地址
2. 防御图片覆盖攻击,需要做到对用户输入的数据进行过滤