前端安全-XSS、CRSF、SSRF总结

引用
作者:美团技术团队
前端安全系列之一:如何防止XSS攻击?
链接:https://juejin.im/post/5bad9140e51d450e935c6d64
前端安全系列之二:如何防止CSRF攻击?
链接:https://juejin.im/post/5bc009996fb9a05d0a055192
作者:BerL1n 链接:https://www.jianshu.com/p/d1d1c40f6d4c
作者:z3r0yu 链接:https://xz.aliyun.com/t/2115

1.XSS攻击

1.1XSS定义

​ Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。

​ XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。

1.2XSS注入方式

  • 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
  • 在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
  • 在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
  • 在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
  • 在 onload、onerror、onclick 等事件中,注入不受控制代码。
  • 在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。
  • 在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。

总之,如果开发者没有将用户输入的文本进行合适的过滤,就贸然插入到 HTML 中,这很容易造成注入漏洞。攻击者可以利用漏洞,构造出恶意的代码指令,进而利用恶意代码危害数据安全。

1.3预防方式

  • 输入过滤:在用户提交时,由前端过滤输入,然后提交到后端。

    • 缺点:会导致乱码问题,只能解决特定的XSS问题。
    • 适用于有明确输入类型的数据的过滤:如数字、URL、电话号码、邮件地址等用户提交信息。
  • 预防存储型和反射型XSS攻击:存储型和反射型 XSS 都是在服务端取出恶意代码后,插入到响应 HTML 里的,攻击者刻意编写的“数据”被内嵌到“代码”中,被浏览器所执行。预防这两种漏洞,有两种常见做法:

    • 改成纯前端渲染,把代码和数据分隔开,浏览器先加载一个静态 HTML,此 HTML 中不包含任何跟业务相关的数据,然后执行HTML中JavaScript通过Ajax加载业务数据。-
    • 对 HTML 做充分转义:使用更完善更细致的转义策略,设置自定的HTML转义规则。
  • 预防 DOM 型 XSS 攻击:DOM 型 XSS 攻击,实际上就是网站前端 JavaScript 代码本身不够严谨,把不可信的数据当作代码执行了。要通过避免在字符串中拼接不可信数据。


2.CSRF攻击

2.1 CSRF定义

​ CSR

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值