这是我参与 8 月更文挑战的第 15 天,活动详情查看: 8月更文挑战
废话不多说,直接上干货。前端常见的攻击手段和预防办法尽在下面:
常见的web前端攻击方式有哪些
-
XSS(Cross Site Scrip)跨站请求攻击 : 攻击者在目标网站植入恶意脚本(js / html),用户在浏览器上运行时可以获取用户敏感信息(cookie / session)、修改web页面以欺骗用户、与其他漏洞相结合形成蠕虫等。
反射型XSS:恶意代码存在 URL 里,如网站搜索、跳转存储性XSS:恶意代码存在数据库里,如论坛发帖、商品评论、用户私信DOM型XSS:取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而上面两种 XSS 都属于服务端的安全漏洞
-
XSRF跨站请求伪造
-
点击劫持ClickJacking
XSS预防(对用户输入内容和服务端返回内容进行过滤和转译)
- 输入过滤:替换特殊字符,进行HTML转义,如 < 变成 < >变成 >
- 前端要替换,后端也要替换
- 对于链接跳转,如
<a href="xxx" 或 location.href="xxx",要检验其内容,禁止以javascript:开头的链接,和其他非法的 scheme。
XSRF预防
- 涉及到数据修改操作严格使用 post 请求而不是 get 请求
- HTTP 协议中使用 Referer 属性来确定请求来源进行过滤(禁止外域)
- 请求地址添加 token ,使黑客无法伪造用户请求
推荐 - HTTP 头自定义属性验证(类似上一条)
推荐 - 显示验证方式:添加验证码、密码等
ClickJacking(点击劫持)预防
点击劫持就是将一个危险网站用ifame设置透明,然后在其上方设置一个按钮,当你点击这个按钮的时候,就会触发底部恶意网站的某些事件。
- 在HTTP响应头中加入
X-Frame-Options属性,此属性控制页面是否可被嵌入 iframe 中【DENY:不能被所有网站嵌套或加载;SAMEORIGIN:只能被同域网站嵌套或加载;ALLOW-FROM URL:可以被指定网站嵌套或加载。】 - 判断当前网页是否被 iframe 嵌套
// 检测当前网站是否被第三方iframe引用
// 若相等证明没有被第三方引用,若不等证明被第三方引用。当发现被引用时强制处理。
if(top.location != self.location){
//iframe应用时的具体代码,如跳转百度
top.location.href = 'http://www.baidu.com'
}