web安全
前端常见的安全问题有哪些
1. XSS Cross Site Scripting 跨站脚本攻击 - 将恶意代码注入到网页中
原理:通过某种方式(输入框发布文章评论等)将一段特定的JS代码隐蔽地输入进去,当别人再看或者评论时,之前注入的JS开始执行,因为它跟原网页JS有同样权限,获取server端数据、cookie等。
- 持久性
- 攻击代被服务端写到数据库中(input提交 时做校验)
- 非持久性
- 通过修改url参数加入攻击代码,诱导用户访问链接从而进行攻击
预防
- 输入内容进行验证和替换,需要转义的字符:
&->&<-><>->>"->"'->'/->/
还可通过对cookie进行控制,增加http-only限制,让JS获取不到cookie内容
- CSP 建立白名单
明确告诉浏览器哪些外部资源可以加载和执行,我们只需要配置规则,如何拦截由浏览器自己实现
- 设置HTTP Header中的Content-Security-Policy
- 设置meta标签方式
<meta http-equiv="Content-Security-Policy">
2. CSRF Cross Site Request Forgery 跨站请求伪造
原理就是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。如果用户是在登录状态下的话,后端就以为是用户在操作,从而进行相应的逻辑。
CSRF 是借用了当前操作者的权限来偷偷地完成某个操作,而不是拿到用户的信息。预防CSRF就是加入各个层级的权限验证。接口使用POST
防范CSRF可遵循以下几个规则:
- Get请求不对数据进行修改
- 不让第三方网站访问到用户Cookie
- 阻止第三方网站请求接口
- 请求时附带验证信息,比如验证码或者Token
- 检查Referrer
3. 点击劫持
攻击者将 被攻击网站通过 iframe 嵌入自己网页中,并将iframe设为透明,在页面中透出一个按钮诱导用户点击
防范:X-FRAME-OPTIONS 响应头~
4. 中间人攻击
攻击方同时与客户端和服务端建立连接,并让双方认为连接是安全的, 但实际上整个通信过程都被攻击者控制了。攻击者不仅能获得双方的通信信息,还能修改通信信息。
不使用公共wifi,容易暴露敏感信息
5. 密码安全
原始数据 - 敏感数据 进行加盐
