服务端 GET 请求的输入内容处理与入库策略
XSS 攻击预防措施通常强调用户输入内容转义,但当一个 GET 请求需要跨端响应时,这一策略的实施会带来一些问题。对于 Web 端通过 SSR 处理或 Ajax 展示的请求,转义会导致内容显示异常。而对于 iOS/Android 端,直接存入数据库时转义,则会使原始内容丢失。
那么,后端的输入内容处理应该如何应对?
首先,前端和后端的处理逻辑是不同的。前端验证是用户体验问题,而后端验证是安全问题。由于前端可以被绕过,因此后端验证是必不可少的。
对于从前端接收的数据,后端应该执行以下步骤:
为什么要先原始存储再转义?因为直接存入转义后的内容会导致:
因此,遵循先原始存储再多端转义的策略,既保证了数据安全,又确保了所有端的正常展示。