将值传递给URL,安全措施

时间:2014-01-21 00:18:56

标签: javascript ajax jquery

我使用JavaScript将值传递到另一个页面的URL。我应该采取什么样的安全措施,以便不能以不好的方式操纵它?

这就是我正在做的事情:

window.location = "post.php?value=" + $("input").val();

谢谢!

3 个答案:

答案 0 :(得分:2)

你唯一能做的就是实施一个合适的&完成服务器端验证以根除无效值。

永远不要相信来自客户端的任何内容始终进行服务器端验证

答案 1 :(得分:1)

很难准确说出你要反对的内容,但如果可能,我会建议以下内容。

如果您有一个可由用户操纵的值,请对该值进行服务器端检查。这不仅限于用户输入的值,而是任何聪明的人都可以在代码中或通过其他方式改变。最好的检查类型是将其限制为确切的已知值。如果它不完全匹配,请不要使用它。

根据您处理的数据,可以接受有问题的字符的较宽松的服务器端过滤器,而不是限制为严格的确切值。

答案 2 :(得分:1)

从发送端,确保编码值。 URL编码AND转义字符,例如“&”,“+”,“/”等。正确性比安全性更多。

然后在接收端,确保发送的值没有调整。您应该“清理”输入,以免摆脱注入风险。此外,您可以使用salted哈希或“私钥”来验证该值。我们选择关键字“abc”。

发件人正在发送值123,但它也会发送身份验证令牌:

?value=abc&auth=XXXX

其中XXXX计算为md5('abc123');

接收端也知道这个共享密钥'abc',因此它将自己的哈希计算与声明的$ auth值进行比较。

如果该值被调节,则将以不同方式计算散列,并且接收器可以拒绝这样的请求。这种技术在跨服务器/ RPC服务中很常见。

希望这有帮助。