【问题标题】:Hash URL parameter, MD5 Hash (PHP)哈希 URL 参数,MD5 哈希 (PHP)
【发布时间】:2012-05-28 12:41:58
【问题描述】:

我使用 ajax 向服务器提交值。

$.ajax({
type: "POST",
url: "services.php",
data: "a=1&b=2&c=3&d=4",
success: function(msg)
{
}
}); 

我面临一个问题。如您所知,有经验的用户可以通过在浏览器 url 栏中键入以下 url 来轻松更改传递参数值。

例如:mywebsite.com/services.php?a=0&b=0&c=0&d=0

据我所知,Javascript 中的散列(参数+密钥)。然后,我将参数值与散列值一起传递给服务器。散列(参数+密钥)在 php 脚本中完成。如果两个哈希值匹配,它将更新数据库中的数据。

基本上,

在 javascript 中:排序(参数)-> 连接(参数)-> md5(参数) 在 php 脚本中:sort(parameter) -> join(parameter) -> md5(parameter) -> 比较两个散列值

有没有合适的方法防止它被改变?

提前致谢。

【问题讨论】:

  • 您应该只在服务器端验证参数及其值
  • 如果这种操作应该只允许授权用户使用?如果是这样,请使用 cookie-session-variable。

标签: php javascript hash md5


【解决方案1】:

诀窍是如何在 javascript 中对用户隐藏密钥?如果您公开它,用户仍然可以进行更改并重新散列参数。你无法真正阻止这种修改,这就是为什么你需要清理和验证服务器端的所有输入。

【讨论】:

  • 你是对的。有没有合适的方法来防止参数值被改变?
  • 并非如此。这样想吧。用户可以在您的服务器上发送任意数据,因此您将永远无法控制从 Web 客户端获得的输入(毕竟,数据可能并不总是来自客户端)。为了防止这种情况,您必须在服务器端进行验证。用户可以在客户端操作任何东西。
  • 供您参考,参数值在客户端生成。例如,一个测验网站。测验结果在客户端生成。有什么方法可以防止测验结果在提交到服务器时被更改?数据完整性?
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 2019-10-10
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 2015-07-07
相关资源
最近更新 更多