例如,用户提交的数据
a < b
方法1,存入数据库时编码,即存入的是
a < b
方法2,写 Html 时编码,即原样存入数据库
a < b
但在写到页面前,编码成
a < b
我个人比较倾向方法1,因为 XSS 是浏览器误会造成的,而后台返回的数据不一定只给浏览器呀,其他客户端(如手机APP)就不用担心,这是其一;
其二,如果这一列在 SELECT 时要比较的话,方法2 就要求比较的值也必须先编码,否则不可能相等,如:
WHERE c = 'a < b'
这么写肯定不行,因为数据库存的是 'a < b'。
所以,从纯粹程序设计的角度讲,方法2 总是假定客户端是浏览器,不好。但是方法1 的问题是,如果每次写到 html 时都要 “记得” 编码,太容易忘!一旦忘记,也就埋下了安全隐患,对吧?
所以您的建议是?
莫回无