做前端需要了解的一些安全方面的知识。
跨站脚本攻击(XSS)
富文本过滤规则:白名单,只允许某些标签,必须是某个属性。
黑名单机制:手动维护黑名单,不能预测新的属性的出现。
跨站请求伪造(CSRF)
登录态是保存在cookie中的,用户首先登录了一个站点A,登录态保存在cookie中, 此时用户登录了一个危险的站点B, 由于Http请求是无状态的,http请求会带上cookie的信息传到服务器B。如果用户没有登出A, 这样B站点发出一个请求去A的一个请求,比如转账等。
这样就模拟了一次CSRF攻击。
防范CSRF的最好的手段是Token。 向页面埋一个会过期的token,当页面提交时,把token带到服务器。
QQ的做法比较另类:
B站点拿不到A站点的cookie, 因为跨域是拿不到cookie的。
A站点做一次处理,拿出cookie作为token传给后端。
QQ安全是分级别的
SSRF(服务端伪造攻击)
原理:控制内网某台机器发出请求,请求内网其他服务器。
防御手段:
1、限制内网域名
2、限制内网ip
3、内网请求地址增加token(特殊登录态)
hijack(页面劫持)
原理: 利用iframe嵌套第三方页面,骗取用户输入账号密码。
if(window.parent != window) {
alert('被嵌套了')
}
授权应用的redirecturl被改了怎么办?
发出一串链接,让你主动去点击