跨站脚本攻击(XSS攻击)
XSS
(cross site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码。比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie
中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。
防范:
- 对于敏感的cookie信息,使用
HttpOnly
,使document对象中找不到cookie。 - 对于用户输入的信息要进行转义。
跨站请求伪造(CSRF攻击)
防范:
1、验证码。 应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制
CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。
2、Anti CSRF Token。 目前比较完善的解决方案是加入Anti-CSRF-Token,即发送请求时在HTTP 请
求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token
和cookie当中的token值是否都存在且相等,才认为这是合法的请求。
防范 CSRF 攻击可以遵循以下几种规则:
- Get 请求不对数据进行修改
- 不让第三方网站访问到用户 Cookie
- 阻止第三方网站请求接口
- 请求时附带验证信息,比如验证码或者 Token
HTTP首部中的一些安全控制
Cookie的HttpOnly属性与secure属性
- HttpOnly属性使JS脚本无法获得cookie。其主要目的为防止跨站脚本攻击(XSS)对cookie的信息窃取。
- secure属性用于限制Web页面仅在https安全连接时才可以发送cookie
X-Frame-Options
首部字段 X-Frame-Options 属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签内的显示问题。其主要目的是为了防止点击劫持(clickjacking)攻击。
首部字段 X-Frame-Options 有三个可设置值:
- DENY :浏览器拒绝当前页加载任何frame页面
- SAMEORIGIN:只允许加载同源域名下的页面
- ALLOW-FROM:可定义允许frame加载的页面地址(被弃用)
X-XSS-Protections
首部字段 X-XSS-Protections 属于 HTTP 响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。
首部字段 X-XSS-Protection 可指定的字段值如下:
- 0:将XSS过滤设置成无效状态
- 1:将XSS过滤设置成有效状态
TRACE请求方法
容易引发XST(Cross-Site Tracing,跨站追踪)攻击
参考文章
前端安全防范知识XSS/CSRF/点击劫持/中间人攻击及防护方案