前端一定需要做XSS防御吗?

公司的软件被用户的漏洞扫描工具扫出了很多安全问题,其中很多是关于XSS。

公司的后端说这个要前端来做,我个人觉得前端做也可以,但是重点不是再后端吗?

后端要是把接口接受的数据全部转义了,我觉得就没什么风险了。

所以我觉得前端其实没有很大的必要做这个,但是我不确定前端如果不做,

而后端做的很好的话是否还会有风险?或者是否还会被政府的扫描工具扫出安全问题?

阅读 6.3k
6 个回答
大部分的xss攻击都是由于没有处理好用户的输入,导致攻击脚本在浏览器中执行,这就是跨站脚本漏洞的根源

例如:
我在这个评论框,输入下面的代码,如果前端不处理直接展示的话,就会一直弹出来(这只是XSS一个简单的例子)。

<script>
while(1){
alert(1)
}
</script>

但是对于一些非XSS攻击,例如 经典的sql注入: url?id=1 or 1=1
sql就会变成 SELECT * FROM article WHERE id =1 or 1=1。
这个一定是要后端去严格限制的。

对于后端来说,前端(客户端)所有的参数都是不可信任的,因为都可以伪造。

所以,无论是XSS,CORS还是SQL注入:
从用户体验来看,前端要做处理;
从系统安全性来看,后端一定要处理(不仅仅是XSS攻击)。

这种事只能说, 前后都要做, 重点在后端
比如说 后端给你返回的数据, 你不用验证, 这个要他们保证数据库里取出来的完全正确
前端要保证 录入的数据完全正确, 其实边界不是那么清晰

  1. 漏洞扫描工具只是根据你的环境检查已知漏洞,并不是模拟攻击,所以漏洞扫描工具并不能100%定位问题到底出在什么位置。很多国产大厂的扫描工具甚至都不知道漏洞是什么,只是到照着引入的版本号对照CVE告警而已,非常啼笑皆非。
  2. XSS 的重点是后端,因为攻击者可以轻易绕过前端页面,直接向后端服务器发起 XSS 注入,只要方式对了,甚至连你的页面都不用开,直接做个curl请求就能在后端爆掉数据库和root权限。所以即使前端做到 100% 语义检查也没什么用。

你看一下 wiki 上的介绍,关于 XSS 的防御方式全部都是讲后端的。

安全性需要前后端结合来提升。
前端2分,后端8分。

一般需要转义哪些内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题