传递变量不是解码

时间:2014-02-21 16:43:15

标签: php md5

嘿,所以我试图弄清楚如何保护在url中传递的变量(我知道get不是最安全的,但这是为了测试)我试图阻止脚本如果url已经通过检查md5哈希的id来篡改,但它一直说它不起作用,我已经尝试了一堆不同的变化,但继续挠挠我的脑袋,这是我在第一页抓取网址输入的代码

// this goes to main.php
while ($row = mysqli_fetch_array($data)) {
$variable = $row['case_id'];
$salt = 'foo';
$hash = md5($salt.$variable);

这是第二页上的代码,用于检索网址信息

// this goes to case.php

$variable = $_REQUEST['case_id'];
$salt = 'foo';
$hash = md5($salt.$variable);
if($hash == $_REQUEST['case_id']){
echo 'success...pass the hash';
}else{
echo 'womp womp';
}

这一切看起来都那么正确但继续给我一个womp womp,我到底看不到什么?

2 个答案:

答案 0 :(得分:1)

场景,就像您尝试重新创建的场景一样,假设令牌的哈希版本存储在内部某处。尝试将散列版本存储在会话中。

$variable = $row['case_id'];
$salt = 'foo';
$_SESSION['hash'] = md5($salt.$variable);

然后......

$variable = $_REQUEST['case_id'];
$salt = 'foo';
if ($_SESSION['hash'] == md5($salt.$variable)) {
    echo "Made it!";
}

答案 1 :(得分:0)

使用$_REQUEST['case_id']输入,输出(检查)!?这总是假的。

$variable = $_REQUEST['case_id'];
$salt = 'foo';
$hash = md5($salt.$variable);
if($hash == $_REQUEST['hash']){
echo 'success...pass the hash';
}else{
echo 'womp womp';
}

在客户端使用java-script进行散列

//just include md5.js from the CryptoJS rollups folder
var hash = CryptoJS.MD5("foo"+$('#case_id').val());
$('#hash').val(hash);