如何解决服务器标头,引荐来源网址等
| 我有一个名为javascript.php的脚本,它包含在html的SCRIPT标记中,如下所示:<script type=\"text/javascript\" src=\"javascript.php\"></script>
我想知道的是,是否可以在javascript.php下检查是否有人直接访问了它,例如:
http://myhost.com/javascript.php
如果有人将其包含在他的HTML中?
更准确地说:如果客户端直接通过URL或通过HTML源下的SCRIPT请求来请求,则是否有头巫婆服务器从客户端收到消息?
解决方法
不,不会有任何保证。
, 一种可以减少\“ silly \\”尝试包含您的脚本的简单解决方案:
if(!empty($_SERVER[\'HTTP_REFERRER\'])){
$parts = parse_url($_SERVER[\'HTTP_REFERRER\']);
$allowed_hosts = array(\'example.com\');
if(!in_array($parts[\'host\'],$allowed_hosts)) {
exit;
}
}
正如上面提到的,引荐来源标头可以很容易地进行操作。如果要真正防止此问题,可以将一些使用简单规则生成的GET参数添加到脚本路径,然后进行检查。例如:
index.php
$c1 = rand();
$c2 = md5($c1.\'HAHA\');
$codes = \'?c1=\'.$c1.\'&c2=\'.$c2;
...
<script type=\"text/javascript\" src=\"javascript.php<?php echo $codes; ?>\"></script>
script.php
if(!isset($_GET[\'c1\']) || !isset($_GET[\'c2\']) || md5($_GET[\'c1\'].\'HAHA\') != $_GET[\'c2\']) {
exit;
}
...
缺少此解决方案的原因是您的JS文件不会被浏览器缓存,因为它每次都会使用不同的参数进行调用。
,
$ _SERVER [\'HTTP_REFERER \']
但这是从用户代理发送的,这意味着他们可以发送任何他们想发送的信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。