Php 解析SQL结果中的变量

Php 解析SQL结果中的变量,php,sql,variables,Php,Sql,Variables,我目前正在建立一个联盟计划(有点像CJ)与贝宝结帐。当人们注册成为会员(=从他们自己的网站销售他们自己的产品)时,他们会收到2行php代码,他们必须将这些代码插入他们的商店 在标题中: <?php include 'http://www.mydomain.com/tracker/tracker.php?xyz='.$_GET[xyz]; ?> 在Paypal按钮中: <input type="text" name="notify_url" value ="ht

我目前正在建立一个联盟计划(有点像CJ)与贝宝结帐。当人们注册成为会员(=从他们自己的网站销售他们自己的产品)时,他们会收到2行php代码,他们必须将这些代码插入他们的商店

在标题中:

<?php include 'http://www.mydomain.com/tracker/tracker.php?xyz='.$_GET[xyz]; ?> 

在Paypal按钮中:

<input type="text" name="notify_url" 
    value ="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>" +
    style="width:1px; height:1px; border:0">

很抱歉,第二部分应该是:

<input type="text" name="notify_url" value ="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>" style="width:1px; height:1px; border:0">

他们收到2行php代码,必须插入到他们的商店中

这是难以置信的狡猾。从给定URL中拖入代码并执行它

我永远不会允许分支网络向我的应用程序添加PHP代码:这让外部站点完全控制我的应用程序和数据库。在未加密的HTTP上运行时,这尤其不可接受:任何中间人攻击都可以立即危害服务器。此外,如果tracker.php中存在跨站点脚本漏洞,任何最终用户都可以完全破坏客户站点

我强烈建议找到一种安全性较低的方式,将您的网络与第三方应用程序连接起来

如果您只想返回HTML以显示在最终页面中,而不是PHP代码,那么可以使用,或者更常见的方法,即让附属公司插入指向您站点的客户端标记

<?php include 'http://www.mydomain.com/tracker/tracker.php?xyz='.$_GET[xyz]; ?>

您还应该使用,以便正确转义参数中的任何URL特殊字符

value="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>"
value=”http://www.mydomain.com/ipn.php?xyz="
在这里,您应该像任何时候将任何文本内容输出到HTML一样,使用htmlspecialchars()对HTML特殊字符进行编码。否则,您很容易受到跨站点脚本攻击


目前,你的问题中还没有足够的信息来准确诊断你的一些附属公司做错了什么。更具体的例子是有用的。但是从您目前发布的内容来看,我非常担心您系统最基本的安全性。

谢谢您详细的回答

我理解你的观点,人们可能不喜欢在他们的页面上包含php文件。因此,我删除了第1部分,并使用重定向url和cookies对其进行了更改。显然,在真正的脚本中,我还可以防止SQL注入

然而,我的主要问题仍然存在。为了跟踪Paypal的销售情况,我需要在网站上的Paypal按钮中添加一个输入字段。这看起来像这样:

<input type="text" name="notify_url" value
="http://www.artinthepicture.com/sellmyart/ipn.php?xyz=<?php echo $_GET['xyz'] ?>" style="width:1px; height:1px; border:0">

你能进一步解释他们得到的输出是什么吗?如果没有htmlspecialchars,就会出现一个安全问题:假设第三方使用参数“?xyz=“>…恶意JavaScript…”将用户指向URL。该网站在HTML中反映了这一点,并且是跨站点脚本编写的受害者。如果他们尝试在数据库中嵌入PHP,我认为可以公平地说,他们的做法非常错误,基本上无法修复。但“xyz”通常不应该是静态附属代码吗?