将加密数据发送到服务器时 Javascript 中的 XSS

XSS in Javascript when sending encrypted data to server

在处理加密数据时,Javascript 中最好的输入清理方法是什么? 假设 Bob 在表单中输入恶意代码而不是常规消息,我的 JS 使用 RSA 对其进行加密并发送到消息等待 Alice 检索它的服务器。在 Alice 计算机上解密后,恶意代码从 LocalStorage 窃取了一些重要的秘密。

我对吗,唯一的方法是在解密后立即检查消息是否包含错误代码?也许只允许字母数字字符和其他一些基本字符被允许,当解密消息包含任何其他内容时,只需停止 运行 中的脚本并从内存中删除消息?

我认为这里最好的解决方案不是清理 Bob 的输入,而是在 显示给 Alice 之前对其进行清理。这样即使Bob输入了一些恶意代码,也不会在显示之前执行。

所以,就这样做吧:

  1. Bob 输入恶意消息并通过 RSA 对其进行加密。
  2. 消息已发送到服务器
  3. Alice 检索她的消息,对其进行解码并在显示之前执行消息清理。甚至用适当的 HTML 实体("< 等)由 JavaScript 在显示解密消息之前足以保护 Alice 免受 XSS 攻击。

因此代码不会窃取 Alice 的任何东西。