服务端的 GET 请求需要多端响应还需要转义用户输入内容 UGC 存入数据库吗?

作者站长头像
站长
· 阅读数 10

看了很多 XSS 攻击预防手段,每个都提到了需要对用户输入内容转义,避免恶意代码,通常是对 & < > " ' / 几个字符转义掉,但是如果说一个 GET 请求 iOS/Andorid/Web 都需要展示

比如内容在 5 < 7

如果在存入数据库时转义,那么数据库实际存储内容就是 5 &lt; 7

那么 iOS/Andorid 端请求时并展示时就是 5 &lt; 7

而对于 Web 来说,如果有用到这个请求的某个页面有 SEO 需求做了 SSR 处理,则拼接 HTML 字符串可以正常展示,而对于有用到这个请求的某个页面是使用 Ajax 来展示,则也会显示 5 &lt; 7

我是前端,不太了解后端的处理逻辑,在后端存入数据库时是如何实现的呢?

是否是任由恶意代码存储进库?(毕竟只要保证浏览器不执行就行了,拼接 HTML 处理即可)

又或者先过滤存储,在实际多端 GET 请求时再转义一次,比如

iOS/Android5 &lt; 7 转义至 5 < 7

回复
1个回答
avatar
test
2024-07-13

前端验不验,是 UE 问题,后端验不验 是安全问题前端可以被绕过,比如模拟API调用,后端绕不过

对于前端的数据后端肯定要做 验证、校验。都通过了后,以原始格式存入数据库(要防止 SQL注入)前端取的时候,正常来讲,就是从原始格式,转成对前端安全的格式

如果存的时候做了转换,取的时候需要另一种格式就是从 存的格式 => 原始格式 => 目标格式,而且有可能根本转不过去。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容