html 中 textarea input 的输入、存储、显示 与 xss 防御。需求如下:
存储用户在 textarea input 中输入的原始数据(非转义后的数据),并可以正确显示,同时要避免 xss 攻击。
存在的问题:使用 div 显示数据时,标签会被错误解析,同时会遭到 xss 攻击。为了避免 xss 攻击,通常的做法是修改用户输入的数据,如将 < 修改为 <;,存在的问题如下:
存储真实数据,div 里显示数据前进行转义
如果要正确的在 div 上显示 textarea input 里输入的数据(避免 xss 攻击,同时显示 < 等标签),需要在获取到数据时,后台将 < 修改为 <;,同时还要过滤其他 xss 攻击。(但我早就放弃了这个方法,因为太麻烦了)
存储真实数据,用 pre 标签显示是否可以。
答:格式可以保留,但完全不能避免 xss 攻击。(除非输入存储的内容不包含特殊字符)
存储转义后的字符带来的问题1
如:用户输入的是 < ,则需要将 <;存储到数据库中。如果该字段的长度限制为1,保存时抛出异常。除非该字段设置的长度永远是用户输入字符长度的20倍以上,才能完全避免该问题。(前端用户输入 16 个字符,Mysql 中 v