html 中 textarea input 的输入、存储、显示 与 xss 防御

博客探讨了HTML中textarea和input的用户输入处理,包括如何存储原始数据、正确显示以及防止XSS攻击。讨论了使用div和pre标签的优缺点,以及存储转义字符可能导致的问题。提出了相应的解决方案,并引用了相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

html 中 textarea input 的输入、存储、显示 与 xss 防御。需求如下:

存储用户在 textarea input 中输入的原始数据(非转义后的数据),并可以正确显示,同时要避免 xss 攻击。

存在的问题:使用 div 显示数据时,标签会被错误解析,同时会遭到 xss 攻击。为了避免 xss 攻击,通常的做法是修改用户输入的数据,如将 < 修改为 &lt;,存在的问题如下:

存储真实数据,div 里显示数据前进行转义

如果要正确的在 div 上显示 textarea input 里输入的数据(避免 xss 攻击,同时显示 < 等标签),需要在获取到数据时,后台将 < 修改为 &lt;,同时还要过滤其他 xss 攻击。(但我早就放弃了这个方法,因为太麻烦了)

存储真实数据,用 pre 标签显示是否可以。

答:格式可以保留,但完全不能避免 xss 攻击。(除非输入存储的内容不包含特殊字符)

存储转义后的字符带来的问题1

如:用户输入的是 < ,则需要将 &lt;存储到数据库中。如果该字段的长度限制为1,保存时抛出异常。除非该字段设置的长度永远是用户输入字符长度的20倍以上,才能完全避免该问题。(前端用户输入 16 个字符,Mysql 中 varchar 的长度最少设置为 320。比较极端的情况,用户输入了 16 个 ",mysql 中保存16个 &quot;,即 64 个字符)

存储转义后的字符带来的问题2

如:用户需要再次编辑,用户原来输入的 < 却在 textarea 里显示成了 &lt;。(除非在获取数据时再转义回去,那是相当麻烦。除非保证用户永远不会再修改数据,那是区块链?)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值