Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 传递的变量不是解码_Php_Md5 - Fatal编程技术网

Php 传递的变量不是解码

Php 传递的变量不是解码,php,md5,Php,Md5,嘿,我想弄清楚如何保护url中传递的变量(我知道get不是最安全的,但这是一个测试)如果url被篡改,我试图通过检查md5哈希的id来停止脚本,但它一直说它不起作用,我尝试了一系列不同的变体,但还是忍不住回头挠了挠脑袋,这是我在第一页上获取url输入的代码 // this goes to main.php while ($row = mysqli_fetch_array($data)) { $variable = $row['case_id']; $salt = 'foo'; $hash = m

嘿,我想弄清楚如何保护url中传递的变量(我知道get不是最安全的,但这是一个测试)如果url被篡改,我试图通过检查md5哈希的id来停止脚本,但它一直说它不起作用,我尝试了一系列不同的变体,但还是忍不住回头挠了挠脑袋,这是我在第一页上获取url输入的代码

// this goes to main.php
while ($row = mysqli_fetch_array($data)) {
$variable = $row['case_id'];
$salt = 'foo';
$hash = md5($salt.$variable);
这是第二页上用来检索url信息的代码

// 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,我到底看不到什么?

场景,如您试图重新创建的场景,假设令牌的哈希版本存储在内部某处。尝试将哈希版本存储在会话或其他内容中

$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!";
}

使用
$\u请求['case\u 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脚本进行散列

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

什么是womp womp,你能把它转换成你为我们收到的错误吗?那么,这两个变量的输出是什么呢?@lxndr,又称“悲伤长号”,我想。仍然不是一条很好的错误消息。问题是您正在使用
$\u REQUEST['case\u id']
的值来创建哈希,外加一个salt<代码>md5('foo'.$\u请求['case\u id'])!=$_请求['case\u id']。什么是
$\u请求['case\u id']
。。。明文GET字段或已哈希的内容?对于数据库条目也是这样吗?你想在这里做什么,仅仅是
$variable==$\u REQUEST['case\u id']
不会告诉你(假设它们都是明文)?这是为了确保URL没有被篡改。向用户显示salt使这完全没有意义。好吧,那么第1步用散列设置会话,第2步通过url传递散列和case_id,第3步从会话中获取散列,第4步如果{来自会话的散列与来自url的散列匹配,则继续}否则{获取错误消息}这或多或少正确吗?或多或少。在3和4之间应该有一个步骤,从url中传递的case_id创建一个散列,并将其与会话中存储的散列进行比较。如果不想在会话中存储散列比较,也可以按照Rocket Hasmat的建议将其放入url中。每种方法都是同样安全的,只要你的盐保持隐藏。哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦,使用该case\u id创建一个哈希,然后与会话中存储的哈希进行比较…..单击链接时,您可能无法指向显示如何设置会话的方向?因此,最后的问题是,我没有首先对该case\u id进行哈希,而是将case\u id与哈希进行比较,因此,无论发生什么,我都会得到一个假消息,因为接收页面上的case_id没有散列