前端安全 - XSS

XSS最核心的问题把一段用户的文本插入到网页中当做标签(innerHTML)或者脚本(服务端渲染JS)来处理了。

解决办法:

  1. 前后端分离,通过ajax请求数据,避免服务端渲染页面。
  2. ajax响应的数据,前端JS完全不使用innerHTML

注意:

  1. 针对IE浏览器,某些场景下会忽略把异步请求的结果当做HTML来处理,需将响应数据包的content-type 定为 application/jsontext/javascript,同时添加X-Content-Type-Options: nosniff头。

  2. 针对富文本编辑器需要把后台数据当做标签来innerHTML的情况,在用户写入该字段的请求中需添加标签白名单,把不在白名单中的标签统统过滤掉。

反射型XSS

把用户的输入(比如URL参数或者表单)前端直接填充到页面或者经后台请求填充到页面。

存储型XSS

用户的输入存储到DB后,前端请求到数据后直接innerHTML到页面。

服务端渲染?如何处理

你可能感兴趣的:(前端安全 - XSS)