我有一个php文件,我将专门将其用作包含文件。因此,当我直接通过输入URL而不是将其包括在内直接访问它时,我想抛出一个错误而不是执行错误。
基本上我需要在php文件中进行如下检查:
if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted");
是否有捷径可寻?
通用的“您可能会或可能不会完全控制的在Apache服务器上运行的PHP应用程序”情况的最简单方法是将includes放在目录中,并拒绝对.htaccess文件中的该目录的访问。为了避免人们使用谷歌搜索的麻烦,如果您使用的是Apache,请将其放入您不希望访问的目录中的“
.htaccess”文件中:
Deny from all
如果您实际上拥有服务器的完全控制权(如今,即使是很小的应用程序,如今也比我初次写此答案时更常见),最好的方法是将要保护的文件粘贴到Web服务器所服务的目录之外。因此,如果您的应用程序位于中/srv/YourApp/
,请将服务器设置为从中提供文件/srv/YourApp/app/
,并将包含内容放入中/srv/YourApp/includes
,因此实际上没有任何URL可以访问它们。
问题内容: 我的网站上有一个说 “ check.php” 的php文件,在提交表单时执行。 说我的网站是 “ myweb.com” ,而php文件在目录“ PHP”中 我想防止直接访问“ check.php”文件的网址,即,如果有人键入网址“ **_myweb.com/PHP/check.php_** ”,则不应执行该php文件,而应返回一条错误消息。 我试图通过在.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文件可处理重写。 问题答案: 您不能仅