Skip to content

web安全

前端常见的安全问题有哪些

1. XSS Cross Site Scripting 跨站脚本攻击 - 将恶意代码注入到网页中

原理:通过某种方式(输入框发布文章评论等)将一段特定的JS代码隐蔽地输入进去,当别人再看或者评论时,之前注入的JS开始执行,因为它跟原网页JS有同样权限,获取server端数据、cookie等。

  • 持久性
    • 攻击代被服务端写到数据库中(input提交 时做校验)
  • 非持久性
    • 通过修改url参数加入攻击代码,诱导用户访问链接从而进行攻击

预防

  1. 输入内容进行验证和替换,需要转义的字符:
  • & -> &
  • < -> <
  • > -> >
  • " -> "
  • ' -> '
  • / -> /

还可通过对cookie进行控制,增加http-only限制,让JS获取不到cookie内容

  1. CSP 建立白名单

明确告诉浏览器哪些外部资源可以加载和执行,我们只需要配置规则,如何拦截由浏览器自己实现

  • 设置HTTP Header中的Content-Security-Policy
  • 设置meta标签方式 <meta http-equiv="Content-Security-Policy">

2. CSRF Cross Site Request Forgery 跨站请求伪造

原理就是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。如果用户是在登录状态下的话,后端就以为是用户在操作,从而进行相应的逻辑。

CSRF 是借用了当前操作者的权限来偷偷地完成某个操作,而不是拿到用户的信息。预防CSRF就是加入各个层级的权限验证。接口使用POST

防范CSRF可遵循以下几个规则:

  1. Get请求不对数据进行修改
  2. 不让第三方网站访问到用户Cookie
  3. 阻止第三方网站请求接口
  4. 请求时附带验证信息,比如验证码或者Token
  5. 检查Referrer

3. 点击劫持

攻击者将 被攻击网站通过 iframe 嵌入自己网页中,并将iframe设为透明,在页面中透出一个按钮诱导用户点击

防范:X-FRAME-OPTIONS 响应头~

4. 中间人攻击

攻击方同时与客户端和服务端建立连接,并让双方认为连接是安全的, 但实际上整个通信过程都被攻击者控制了。攻击者不仅能获得双方的通信信息,还能修改通信信息。

不使用公共wifi,容易暴露敏感信息

5. 密码安全

原始数据 - 敏感数据 进行加盐

共 20 个模块,1301 篇 Markdown 文档。