针对XSS,数据库应该存放用户原始输入还是转义后的结果?

用户在表单里输入一些特殊字符如:& (& 符号)," (双引号),' (单引号),< (小于),> (大于)等,这些特殊字符可能会导致XSS攻击。当获取到用户输入后,可以用htmlspecialchars函数去转义,然后存到数据库,以后读出来就可以直接吐给前端去展示了,不会导致XSS。还有一种方案就是获取用户输入后直接存放到数据库,以后读出来的时候用htmlspecialchars转义再吐给前端。究竟哪一种方案比较合理呢?为什么?在网上有看到有人说数据库应该存放用户原始输入。(我用数据库是MYSQL,后端代码用PHP写)。

阅读 2.5k
1 个回答

需要考虑你们的安全策略,如果严格执行安全策略的编码的话,那么无论你怎么操作,只要规定好就行了。但是一旦存在不严格的代码的时候,那么就爆炸了,所以一般采取的都是写入转义,这样子更加安全一些,因为写入方一般少于读取方

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