处理加密数据时,Javascript中输入清除的最佳方法是什么?
可以说,鲍勃以格式而不是常规消息的形式输入了malicius代码,我的JS用RSA加密了该代码,然后发送到服务器,消息在此等待爱丽丝检索它。例如,在Alice计算机上解密后,恶意代码会从LocalStorage窃取一些重要秘密。
我唯一正确的方法是在解密后立即检查邮件中是否包含一些错误代码吗?也许只允许使用字母数字字符和其他一些基本字符,并且当解密的消息包含其他内容时,只是停止运行脚本并从内存中清除味精?
最佳答案
我认为这里最好的解决方案不是清理Bob的输入,而是在显示给Alice之前清理它。因此,即使Bob输入了一些恶意代码,它也永远不会在显示之前被执行。
因此,只需执行以下操作:
鲍勃输入恶意消息并通过RSA对其进行加密。
消息发送到服务器
爱丽丝检索她的消息,对其进行解码并在显示之前执行消息清理。在显示解密的消息之前,甚至可以用JavaScript用适当的HTML实体("
,'
等)简单地替换引号(<
和>
)和方括号("
和<
),足以保持解密爱丽丝(Alice)不受XSS保护。
因此,该代码不会从Alice那里窃取任何东西。