将加密数据发送到服务器时 Javascript 中的 XSS
XSS in Javascript when sending encrypted data to server
在处理加密数据时,Javascript 中最好的输入清理方法是什么?
假设 Bob 在表单中输入恶意代码而不是常规消息,我的 JS 使用 RSA 对其进行加密并发送到消息等待 Alice 检索它的服务器。在 Alice 计算机上解密后,恶意代码从 LocalStorage 窃取了一些重要的秘密。
我对吗,唯一的方法是在解密后立即检查消息是否包含错误代码?也许只允许字母数字字符和其他一些基本字符被允许,当解密消息包含任何其他内容时,只需停止 运行 中的脚本并从内存中删除消息?
我认为这里最好的解决方案不是清理 Bob 的输入,而是在 显示给 Alice 之前对其进行清理。这样即使Bob输入了一些恶意代码,也不会在显示之前执行。
所以,就这样做吧:
- Bob 输入恶意消息并通过 RSA 对其进行加密。
- 消息已发送到服务器
- Alice 检索她的消息,对其进行解码并在显示之前执行消息清理。甚至用适当的 HTML 实体(
"
、<
等)由 JavaScript 在显示解密消息之前足以保护 Alice 免受 XSS 攻击。
因此代码不会窃取 Alice 的任何东西。
在处理加密数据时,Javascript 中最好的输入清理方法是什么? 假设 Bob 在表单中输入恶意代码而不是常规消息,我的 JS 使用 RSA 对其进行加密并发送到消息等待 Alice 检索它的服务器。在 Alice 计算机上解密后,恶意代码从 LocalStorage 窃取了一些重要的秘密。
我对吗,唯一的方法是在解密后立即检查消息是否包含错误代码?也许只允许字母数字字符和其他一些基本字符被允许,当解密消息包含任何其他内容时,只需停止 运行 中的脚本并从内存中删除消息?
我认为这里最好的解决方案不是清理 Bob 的输入,而是在 显示给 Alice 之前对其进行清理。这样即使Bob输入了一些恶意代码,也不会在显示之前执行。
所以,就这样做吧:
- Bob 输入恶意消息并通过 RSA 对其进行加密。
- 消息已发送到服务器
- Alice 检索她的消息,对其进行解码并在显示之前执行消息清理。甚至用适当的 HTML 实体(
"
、<
等)由 JavaScript 在显示解密消息之前足以保护 Alice 免受 XSS 攻击。
因此代码不会窃取 Alice 的任何东西。