看了很多 XSS
攻击预防手段,每个都提到了需要对用户输入内容转义,避免恶意代码,通常是对 & < > " ' /
几个字符转义掉,但是如果说一个 GET
请求 iOS/Andorid/Web
都需要展示
比如内容在 5 < 7
如果在存入数据库时转义,那么数据库实际存储内容就是 5 < 7
那么 iOS/Andorid
端请求时并展示时就是 5 < 7
而对于 Web
来说,如果有用到这个请求的某个页面有 SEO
需求做了 SSR
处理,则拼接 HTML
字符串可以正常展示,而对于有用到这个请求的某个页面是使用 Ajax
来展示,则也会显示 5 < 7
我是前端,不太了解后端的处理逻辑,在后端存入数据库时是如何实现的呢?
是否是任由恶意代码存储进库?(毕竟只要保证浏览器不执行就行了,拼接 HTML
处理即可)
又或者先过滤存储,在实际多端 GET
请求时再转义一次,比如
iOS/Android
由 5 < 7
转义至 5 < 7
前端验不验,是 UE 问题,后端验不验 是安全问题
前端可以被绕过,比如模拟API调用,后端绕不过
对于前端的数据后端肯定要做 验证、校验。
都通过了后,以原始格式存入数据库(要防止 SQL注入)
前端取的时候,正常来讲,就是从原始格式,转成对前端安全的格式
如果存的时候做了转换,取的时候需要另一种格式
就是从 存的格式 => 原始格式 => 目标格式,而且有可能根本转不过去。