在我的网站上,我有一个search.php
页面,对$.get
和search_data.php
等网页发出search_user_data.php
次请求。
问题是所有这些文件都位于我的公共html文件夹中。
即使有人可以浏览www.mysite.com/search_user_data.php
,所有处理的数据都会被正确转义和处理,但在专业级别上,这甚至不足以让这个文件在公共范围内。
我已经尝试将敏感文件移动到我的Web根目录,但是由于Jquery正在发出$.get
个请求并在URL中传递变量,所以这不起作用。
有谁知道确保这些易受攻击的网页安全的方法?
答案 0 :(得分:2)
每次加载页面时都可以存储一个uid,并将其存储在$ _SESSION ['uid']中。你可以通过以下方式将这个uid用于javascript:
var uid = <?php print $_SESSION['uid']; ?>;
然后你将它与你的get请求一起传递,将它与你的$ _SESSION:
进行比较if($_GET['uid'] != $_SESSION['uid']) // Stop with an error message or send a forbidden header.
如果没问题,那就做你需要的。
这并不完美,因为有人可以请求search.php并获取当前的uid,然后请求其他页面,但这可能是最好的解决方案。
答案 1 :(得分:2)
你所描述的是正常的。
您拥有可在www目录中访问的PHP文件,因此apache(或您喜欢的Web服务器)可以读取和处理它们。 如果你把它们移出来就不能再找到它们了,所以没有那种真正的选择。
在AJAX的所有PHP文件都只是普通的php文件之后,你的其他项目也可能包含php文件。对 ?它们的风险并不比服务器上的任何脚本更高或更低。
确保编程“干净”。在编写php函数时考虑恶意请求,而不是在编写它们之后。 正如您所做的那样:正确引用可能会触及数据库或敏感函数的所有传入输入。
您可以对传入的值添加安全检查,并在检测到某人尝试恶意内容时创建自动发送的电子邮件。因此,在这种情况下,您可能会收到警告。 但缺点是:您会定期收到警告,因为有些公司会自动扫描网站是否存在可能的错误。因此,您也会收到有关此类扫描的警告。
除了尽可能地将代码编写为“安全”之外,您可能还想在代码中添加引用检查。这意味着只有当您的网站在访问时作为引用者提供时,您的PHP文件才会做出反应。这足以阻止80%的孩子在那里。 但在缺点方面:一些互联网用户根本不发送引用,一些代理过滤掉了。 (我个人会忽略它们,无论如何,有一半(www)互联网打破了它们)
htaccess可以添加一层保护,你可以在PHP中做大部分保护,但它可能仍然是你感兴趣的:http://httpd.apache.org/docs/2.0/howto/htaccess.html