PHP - 重定向REQUEST_URI - 正确的方法?

时间:2013-06-05 06:10:27

标签: php redirect web

我创建了一个网站(纯粹的爱好)。我基本上做的是使用jquery在后台调用所有ajax。是的,它可以安全地从SQL注入,所以没有伤害,但我不希望用户检查firebug /开发人员工具并尝试使用URI并在URL工具栏中手动输入它并获得结果。我该如何防止这种情况?

示例,用户输入到URL框中: www.something.com/datapull.php?get=Data&Person=Sean

我有类似的东西:

if(strpos($_SERVER['REQUEST_URI'],'/datapull.php') !== false) { header('Location: /'); }

但是当我这样做时,我的网络陷入无限循环。我基本上都希望网络能够随时出现:www.something.com

如果没有用户手动输入,我该如何保留它?

2 个答案:

答案 0 :(得分:2)

详细说明我的评论你可以尝试这个..

在ajax请求文件中,您可以检查正在设置的$_SERVER['HTTP_REFERER'],并包含您自己的域名。

这是一个简单的例子..

的index.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Ajax Test</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    </head>
    <body>
        <div class="ajax_receiver">

        </div>
        <script>

            $('.ajax_receiver').load('data.php');

        </script>
    </body>
</html>

data.php

<?php

    print_r($_SERVER);

如果您按原样运行,则会看到$_SERVER的内容,并且应该看到HTTP_REFERER。

现在我们需要做的就是为ajax请求页面添加一个条件,在本例中为data.php,如果未设置,则退出,或者它不是来自我们域的请求。

data.php(已更新)

<?php
    if ( ! isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false)
    {
        exit;
        // or take whatever exit action you want here
    }
    print_r($_SERVER);

希望您可以使用它来帮助您入门。

答案 1 :(得分:0)

  

我基本上做的是在后台调用所有ajax   jQuery的。是的,它可以安全地从SQL注入,所以没有伤害

很抱歉,如果我说它无法阻止SQL注入。

  

但是我不希望用户检查firebug / developer工具   尝试使用URI并在URL工具栏中手动输入它并获取   结果

如果网络浏览器无法访问链接,那么您的AJAX也是如此。