当前位置: 首页 > 面试题库 >

防止直接访问php文件

武元白
2023-03-14
问题内容

我的网站上有一个说 “ check.php” 的php文件,在提交表单时执行。

说我的网站是 “ myweb.com” ,而php文件在目录“ PHP”中

我想防止直接访问“ check.php”文件的网址,即,如果有人键入网址“ **_myweb.com/PHP/check.php_**
”,则不应执行该php文件,而应返回一条错误消息。

我试图通过在.htaccess中设置规则来阻止访问,但是即使我尝试提交表单,它也会阻止php。

.htaccess规则:

RewriteEngine on 
RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ 
(.*)\.php$ /index.html [L]

有什么可行的方法吗?


问题答案:

您可以使用PHP做到这一点

<?php
    /* at the top of 'check.php' */
    if ( $_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath( $_SERVER['SCRIPT_FILENAME'] ) ) {
        /* 
           Up to you which header to send, some prefer 404 even if 
           the files does exist for security
        */
        header( 'HTTP/1.0 403 Forbidden', TRUE, 403 );

        /* choose the appropriate page to redirect users */
        die( header( 'location: /error.php' ) );

    }
?>


 类似资料:
  • 问题内容: 我有一个php文件,我将专门将其用作包含文件。因此,当我直接通过输入URL而不是将其包括在内直接访问它时,我想抛出一个错误而不是执行错误。 基本上我需要在php文件中进行如下检查: 是否有捷径可寻? 问题答案: 通用的“您可能会或可能不会完全控制的在Apache服务器上运行的PHP应用程序”情况的最简单方法是将includes放在目录中,并拒绝对.htaccess文件中的该目录的访问。

  • 问题内容: 如何防止我的用户直接访问仅用于ajax调用的页面? 在ajax调用期间传递密钥似乎是一种解决方案,但是不处理没有密钥的访问。但是制作密钥也很容易,不是吗?查看源的诅咒… p / s:使用Apache作为Web服务器。 编辑:要回答原因,我的index.php中有jQuery ui- tabs,并且在这些选项卡中是带有脚本的表单,如果直接访问它们将不起作用。我不知道为什么用户会想要这样做

  • 问题内容: 我从像这样的ajax调用php代码: 由于这是一个获取请求,因此任何人都可以通过简单地检查标头来查看它。传递的数据不敏感,但由于获取参数名称也很容易,因此有可能被滥用。 如何阻止直接访问http://mysite/func.php却允许我的ajax页面访问它? 问题答案: 大多数Ajax请求/框架都应设置此特定标头,以用于过滤Ajax v非Ajax请求。我用它来帮助确定许多项目中的响应

  • 问题内容: 我正在将文件(pdf,doc,flv等)加载到缓冲区中,并通过脚本将其提供给我的用户。我需要我的脚本能够访问文件,但不允许直接访问它。什么是实现这一目标的最佳方法?我应该使用我的权限来做某事还是使用.htaccess锁定目录? 问题答案: 最安全的方法是将想要保留的文件放到Web根目录之外,就像Damien建议的那样。之所以可行,是因为Web服务器遵循本地文件系统特权,而不是其自身的特

  • 问题内容: 我希望有一个网页使用AJAX来访问PHP文件 麻烦的是,我不希望人们能够在浏览器中键入地址来直接访问该PHP文件。 有什么办法可以使只有AJAX请求才能访问该文件? 我可以在PHP文件中检查某些内容来实现此目的吗? 问题答案: 如果您使用jQuery制作XHR,它将设置一个自定义标头。您可以检查并确定如何提供您的回复。 但是,这对于欺骗是微不足道的。过去,我曾用它来决定是渲染整个页面(

  • 问题内容: 我使用Minify来缩小并缓存所有脚本请求。 我只希望我的用户能够访问JavaScript文件的缩小版本。 Minify位于,我的脚本位于。如何阻止直接访问未缩小的JavaScript文件所在的位置。我宁愿不要将它们从文档根目录中删除,但这是一个选择。 请注意,我使用的是Zend Framework,因此应用程序的实际根目录已移至。htaccess文件可处理重写。 问题答案: 您不能仅