我有此页面将数据发布到另一个网址。我尝试使用cURL但没有工作,因为我需要将用户重定向到目标网站,而cURL只是将它带入当前网站。 所以我正在做的是
<form action='http://destination.com' method='post' name='frm'>
<input type='hidden' name='account_id' value='<?php echo $_SESSION["accont_id"]; ?>'>
</form>
<script>
document.frm.submit();
</script>
但显然这是完全不安全的,任何使用像charles代理这样的程序的用户都可以拦截和更改这些数据。有没有办法保护它?验证不会起作用,因为用户知道我的数据库具有的数据类型,他们知道每个人的帐户ID,我无法改变它。我能做什么?也许加密会起作用? 即使用户能够更改数据也可以,只要他们无法将其更改为其他有效帐户的ID。我在思考像秘密/哈希这样的东西,但不能把所有东西都放在我脑海里。
我试过用这个:
$url = 'http://www.destination.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'account_id='.$_SESSION["account_id"]);
curl_exec($curl);
curl_close($curl);
echo "<meta http-equiv='refresh' content='0;url=http://destination.com'/>";
但页面被重定向,没有数据到达。该帖子不会通过
答案 0 :(得分:1)
上述评论中讨论的底线导致了您实际尝试的方法:
您向远程系统发出cURL请求,发布用户ID,因此服务器到服务器。远程系统创建一些随机令牌(随机32个字符串)并返回它,它将该令牌与发布的用户ID一起存储以供以后参考。现在本地系统向客户端发送包含该令牌的重定向头。这导致客户端向远程系统发出请求,声称它已被递送。远程系统检查存储的令牌,可以从中派生用户ID,创建用户会话并删除令牌。