漫谈前端安全

发布于 6 年前
1 分钟阅读

XSS 和 CSRF 是前端中常见的攻击。


XSS

XSS ( Cross Site Scripting ) 跨站脚本攻击 就是浏览器解析了用户恶意输入的内容,导致页面出现问题。例如:评论中注入脚本弹出弹窗,那么其它用户打开的时候就会弹出弹窗,干扰网页正常运行。

XSS 主要分成两个过程:注入,解析。有些用户输入的信息还会存储到数据库中,就被称为存储型 XSS 攻击。而没有存储过程的攻击被称为反射型 XSS 攻击。

转义

防范 XSS 攻击,主要是如何正确解析。常见的解决方案就是转义,例如将 < 转义为 &lt; 。这样最终不会去执行脚本,而是显示为文本。

CSP(Content Security Policy)

另外还有一种方案就是利用浏览器内容安全策略。CSP 以白名单的机制来过滤非法的资源,同时禁止了内嵌脚本,以及 eval 动态执行函数。


CSRF

CSRF (Cross-site request forgery)跨站请求伪造主要是伪造一个请求,用户点击之后即触发该请求,从而产生用户意料外的结果。当该请求携带了用户凭证,那么该结果就可能造成危害。

例如:cookie 携带了用户的 sessionid,在请求的时候会泄漏或被攻击者直接利用。

token

在表单提交的时候可以携带一个服务器生成的 token,服务器校验 token 来校验是否预期的请求。

Referer

验证 referer 来判断请求是否是第三方网站发起。

请求头

将用户凭证存放在请求头的 Authorization 字段中,服务器验证请求头字段。这样默认情况下用户凭证不会被携带上,从而避免泄漏。

  • XSS
    • 转义
    • CSP(Content Security Policy)
  • CSRF
    • token
    • Referer
    • 请求头