0

我们使用 iframe 在我们的网站上展示广告。

iframe 用于让我们将广告生成代码和其他网站模块分开。

当我们跟踪我们网站上的广告浏览量时,并且需要能够准确计算哪种页面类型获得了哪些浏览量,我必须确保用户不能简单地将加载广告的 iframe 复制粘贴到另一个网站上。这将导致此页面的广告计数膨胀,并且计数与 iframe“应该”显示的页面的查看计数不匹配。

在任何人这么说之前:不,我不能简单地将页面查看次数与广告查看次数进行比较,或者使用页面查看次数 * 每页的广告数,因为每页的广告数不一定是静态的。

我需要想出一个解决方案,让广告仅针对动态生成并显示在我们页面上的 iframe 显示。


我不熟悉 PHP 会话,但从我有时间做的少量阅读来看,以下似乎是一个可以接受的解决方案:

将“s = session_id()”添加到广告 iframe 的 src。

在接收和处理广告请求的代码中,如果 s == session_id(),只返回(和计数)和广告。

如果我错了,请纠正我,但这将确保:

广告只会返回到其 src 与页面的其余内容一起生成的 iframe,就像在正常使用期间一样。

我们可以使用无效的 session_id 将我们的徽标返回给广告调用。

所以一个简单的例子是:

我们的页面之一:

<?php session_start(); ?>
<div id="someElement">
    <!-- EVERYONE LOVES ADS -->            
    <iframe src="http//awesomesite.com/ad/can_has_ad.php?s=<?php echo session_id(); ?>></iframe>
</div>

广告/can_has_ad.php:

<?php session_start(); ?>
if($_GET['s'] == session_id()){
    echo 'can has ad';
}
else{
    echo '<img src="http://awesomesite.com/images/canhaslogo.jpg"/>';
}

最后,使用静态 's' 参数复制代码:

<!-- HAHA LULZ I WILL SCREW WITH YOUR AD VIEW COUNTS LULZ HAHA -->            
<iframe src="http//awesomesite.com/ad/can_has_ad.php?s=77f2b5fcdab52f52607888746969b0ad></iframe>

这会给他们一个 iframe 显示我们很棒的网站的标志,而不是搞砸我们的观看次数。

我做了一些基本的测试用例:两个文件,一个生成 iframe 并回显它,另一个指向 iframe 的 src,它检查“s”参数并根据结果显示适当的消息。我将 iframe 复制到一个文件中并将其托管在不同的服务器上,并显示了正确的消息(不能有广告)。


所以,我的问题是:

这行得通还是我是一个 PHP 会话菜鸟,上面的测试完全是侥幸?

谢谢你的时间!

编辑:

我试图在不接触 SQL 服务器的情况下解决这个问题,因为站点的其余部分是 SQL 密集型的,我不想给已经摇摇欲坠的 SQL 服务器增加负载......

4

1 回答 1

1

您不应该将会话 ID 放在 url 中,因为它容易受到引用者窥探。(如果用户从 url 中带有 session id 的页面点击链接,他们将能够在referrer header 中看到 session id)

除了使用 iFrame,您可以考虑在服务器上请求 iFrame 内容(例如使用 curl)并将其打印到您的页面上。这样,其他任何人都无法直接嵌入它。

您也可以考虑在加载 iFrame(应该是包含页面的 url)之前检查引荐来源标头,但是伪造引荐来源标头非常容易,因此这不应该被视为“好的”解决方案。

总之,我强烈建议您寻找另一种将广告放到您的网页上的方法!

于 2010-05-27T10:11:53.003 回答