我使用JavaScript将值传递到另一个页面的URL。我应该采取什么样的安全措施,以便不能以不好的方式操纵它?
这就是我正在做的事情:
window.location = "post.php?value=" + $("input").val();
谢谢!
答案 0 :(得分:2)
你唯一能做的就是实施一个合适的&完成服务器端验证以根除无效值。
永远不要相信来自客户端的任何内容始终进行服务器端验证
答案 1 :(得分:1)
很难准确说出你要反对的内容,但如果可能,我会建议以下内容。
如果您有一个可由用户操纵的值,请对该值进行服务器端检查。这不仅限于用户输入的值,而是任何聪明的人都可以在代码中或通过其他方式改变。最好的检查类型是将其限制为确切的已知值。如果它不完全匹配,请不要使用它。
根据您处理的数据,可以接受有问题的字符的较宽松的服务器端过滤器,而不是限制为严格的确切值。
答案 2 :(得分:1)
从发送端,确保编码值。 URL编码AND转义字符,例如“&”,“+”,“/”等。正确性比安全性更多。
然后在接收端,确保发送的值没有调整。您应该“清理”输入,以免摆脱注入风险。此外,您可以使用salted哈希或“私钥”来验证该值。我们选择关键字“abc”。
发件人正在发送值123,但它也会发送身份验证令牌:
?value=abc&auth=XXXX
其中XXXX计算为md5('abc123');
接收端也知道这个共享密钥'abc',因此它将自己的哈希计算与声明的$ auth值进行比较。
如果该值被调节,则将以不同方式计算散列,并且接收器可以拒绝这样的请求。这种技术在跨服务器/ RPC服务中很常见。
希望这有帮助。