Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/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_Security - Fatal编程技术网

Php 具有固定链接的最大可能安全性

Php 具有固定链接的最大可能安全性,php,security,Php,Security,首先,;我知道这个问题很奇怪,我可能会得到很多反对票,但我仍然需要更多的信息 问题就在这里;我工作的公司有一个webshop(PHP、MySQL、IIS)。网店将给那些来自其他第三方网站的人打折。登录到第三方网站后,用户将看到一个指向webshop的静态链接(链接可能包含某种代码)[更新我们可以提供链接,这就是我们所能做的,我们在第三方服务器上没有任何特权]。如果他们使用该链接去网店,他们必须获得折扣。如果用户使用另一个链接,或直接去网店,则不应获得折扣 我曾考虑使用PHPs HTTP_REFE

首先,;我知道这个问题很奇怪,我可能会得到很多反对票,但我仍然需要更多的信息

问题就在这里;我工作的公司有一个webshop(PHP、MySQL、IIS)。网店将给那些来自其他第三方网站的人打折。登录到第三方网站后,用户将看到一个指向webshop的静态链接(链接可能包含某种代码)[更新我们可以提供链接,这就是我们所能做的,我们在第三方服务器上没有任何特权]。如果他们使用该链接去网店,他们必须获得折扣。如果用户使用另一个链接,或直接去网店,则不应获得折扣

我曾考虑使用PHPs HTTP_REFERER来检查用户是否来自第三方网站,但这并不可靠。有没有别的办法让这更安全一点?我知道我们无法创建完全安全的链接,但我们至少应该做一些事情,防止用户将链接发布到论坛或通过电子邮件共享


我希望你能帮助我,请不要因为我必须执行客户的请求而让我生气。我知道这很愚蠢,我只需要这样做,我想用最好的方式去做。

首先,我不认为这是一个愚蠢的问题:)

HTTP_REFERER方法听起来并不太糟糕。。你是对的,它不是完全防水的,但是你必须依靠用户的浏览器告诉你他从哪里来——没有其他办法。我想说,一个特殊的链接和检查你端的HTTP_REFERER的组合应该会很好

…我们至少应该采取一些措施,防止用户发帖 指向论坛的链接或通过电子邮件共享

不是真的。你能做的最好的事情就是结合使用HTTP_REFERER和嵌入在链接中的密码,但是前者很容易伪造,后者很容易复制。你本质上是要求公布一个电话号码,而不让任何人知道这个电话号码是什么


编辑:如果你对远程第三方网站有一定影响力,你可以签订一份联合协议,定期(每天?)更改密码。或者更好的方法是,如果您都可以通过编程实现,那么您可以将代码到期时间设置为非常短的时间(例如一分钟)——这将使论坛帖子变得无用。

让链接调用一个javascript函数,该函数形成指向PHP脚本的url,并将窗口位置href作为参数传递。然后在php脚本中,测试href是否与预期的起始点匹配。

这里有一个建议:

您的附属网站生成一个独特的字符串,该字符串嵌入到您网站的链接中

$link=md5($_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]."Very secret string");
echo '<a href="http://yoursite.com/ref='.$link.'">Claim your rebate now!</a>';

我用更多的信息更新了我的问题,基本上,我们没有选择。因此,基本上,第三方网站只能提供到您网站的链接,而不需要添加任何查询字符串本身,或者他们是否能够将查询字符串添加到他们提供的URL?据我所知,我们给他们一个链接到的URL,就是这样。这一切都是非常有限的…这将是好的,一个仍然可以伪造它,但这将使它更加困难。太糟糕了,我们只能提供一个静态链接,所以我认为我们不能添加javascript。你不能在散列中使用$\u SERVER['HTTP\u REFERER',],但这个想法是可以的。但同样,我们必须提供一个静态链接……”请告诉我,你已经更新了它,使用HTTP_用户_代理是的,改变链接的想法是我的第一个建议,但不幸的是,第三方可能无法做到这一点…你能通过编程向他们推送一个新的链接吗?也就是说,编写一个脚本,使他们的链接更新,而不需要任何人为干预?然后你可以每天在你这边生成一个新链接并批量推送给他们。这是个好主意,但我仍然认为这不是一个选项…:(
if($_GET["ref"]==md5($_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]."Very secret string")){
    applyRebate();
}