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

看了很多 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

阅读 2.5k
2 个回答

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

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

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

后端一定是要处理的,很多验证、防止代码注入后端都是要做的,后端开发时一定要有一个原则:前端不可靠,这个不可靠不是贬义,而是你要做好前端没做任何处理的数据或者输入,不能让前端给你兜底。

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