Day15-安全攻击和预防都有哪些办法?

234 阅读2分钟

这是我参与 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'
}