我创建了一个网站(纯粹的爱好)。我基本上做的是使用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
如果没有用户手动输入,我该如何保留它?
答案 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也是如此。