如何在php中保护查询字符串?

问题描述:

urlencode和urldecode函数在那里,但是如果你有一个可以使用urldecode函数很容易解码的编码值。如何在php中保护查询字符串?

是否有任何其他方法可用于使查询字符串更强大并且不易受到攻击。 使用哈希会很好,但如果可以尽量不要使用太多的计算。

+2

你想要什么类型的安全性? URL编码参数的消耗是安全性需要解决的地方,这是验证不可信和不可信输入的问题。 或者,你可能会试图去做奥沙沃特在他的回答中所说的话。 – 2013-04-24 21:34:58

这听起来像你在谈论URL字符串而不是查询字符串。保护您不希望用户看到的变量的最佳方法是使用POST操作而不是GET操作。

urlencode的作用是not to provide security,它是对可能包含特殊字符等字符串进行编码以传入GET请求。

POST不会将变量存储为URL的一部分或浏览器历史记录,因此发送敏感信息会更好。如果你想真正保护信息不被用户操纵,你必须对它进行散列或加密(例如,密码应在之前散列)。

POST vs GET comparison

+0

我不认为使用POST可以节省一些东西 – 2013-04-24 21:36:08

+0

如果想到安全性 - 使用HTTPS(SSL)而不是http! – bestprogrammerintheworld 2013-04-24 21:41:57

+0

完全不同的安全类型(防止外部嗅探而不是用户操作),但也很有用。 – 2013-04-24 21:43:49

请即使使用POST,你没有真正隐藏的人谁想要得到的数据什么的想法。要非常小心您允许在GET和POST中发送什么样的数据。要知道,无论您选择哪个,它仍然可以由最终用户操纵。

+0

如何在用户端确保安全......只能在服务器端完成输入消毒 – Abhishek 2014-08-02 18:51:31

+0

消毒输入很有用,但您确实应该将其更多地锁定(例如,在ColdFusion中使用CFQUERYPARAM)。 – Lawson 2014-08-03 19:54:56

Guessing this is what you're wanting to look at.这将告诉你如何“清除”来自用户的输入,无论是否来自查询字符串。

我不确定POST'ing变量是否更安全......铬开发工具将解决这个问题。