仅允许从Project .php文件请求.php页面

时间:2018-01-27 21:02:27

标签: php .htaccess

我希望我的应用程序允许仅从应用程序页面而不是从外部地址访问/引用页面。除了将用作访问应用程序的主(index.php)页面。因此,例如,如果我在桌面上使用链接或表单构建一个html文件到应用程序页面的目标,我希望它重定向到index.php。
我怎样才能做到这一点? 我试图添加这些行.htaccess

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
<Files /index.php>
    Order Allow,Deny
    Allow from all
</Files>
<FilesMatch ".*\.(css|js)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>

但这不起作用,因为桌面文件仍在我的服务器中。 编辑2: 我编辑了.htaccess文件,现在它可以正常工作

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ http://localhost/website/index.php [R,L]

1 个答案:

答案 0 :(得分:1)

如果你的意思是你不希望你的网页如config.php,x.php等直接通过浏览器访问那么你可以简单地在index.php页面上定义一个常量并检查它是否存在于任何其他页面上PHP文件。

如果您希望仅通过index.php提交表单,那么唯一的解决方案是使用由index.php生成且仅对一次使用有效的可更改CSRF令牌。这样你就可以确保没有人可以克隆表单输入并使用来自其他服务器的请求发送垃圾邮件。

完全阻止任何人向您发送服务器外部请求仍然非常困难。可以使用复飞技术绕过令牌验证。攻击者只需发送一个CURL请求即可获取新令牌,然后将其自动放入表单并从外部发送请求  服务器。