Tyl*_*ter 52
如果你使用
define('APP_RAN');
Run Code Online (Sandbox Code Playgroud)
在包含它的文件中然后放入
if(!defined('APP_RAN')){ die(); }
Run Code Online (Sandbox Code Playgroud)
或者
defined('APP_RAN') or die();
Run Code Online (Sandbox Code Playgroud)
(这更容易阅读)
在包含的文件中,如果您直接访问它们将会死亡.
将所有包含的文件放在DocumentRoot上面可能会更好.
例如,如果您的索引页面位于
/my/server/domain/public_html
Run Code Online (Sandbox Code Playgroud)
你应该把包含的文件放入
/my/server/domain/
Run Code Online (Sandbox Code Playgroud)
use*_*291 14
不要在文件中使用任何全局代码,只使用函数和方法.然后就没有必要关心包括与直接使用.
mgu*_*utt 14
我的建议:
<?php
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
exit("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n<html><head>\r\n<title>404 Not Found</title>\r\n</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on this server.</p>\r\n</body></html>");
}
else {
// your code
}
?>
Run Code Online (Sandbox Code Playgroud)
1.)它检查是否直接调用,否则会抛出错误
2.)它输出一个404标准的apache错误页面(请与你原来的404页面比较或简单包含该页面)通过默默无闻添加安全性
3.)else文件在文件上传到实时环境时避免部分执行(PHP不等待"?>").如果包含的文件只包含一个函数/一个类,则不需要它.
tim*_*tim 11
if (!defined('FLAG_FROM_A_PARENT'))
// Works in all scenarios but I personally dislike this
if (__FILE__ == get_included_files()[0])
// Doesn't work with PHP prepend unless calling [1] instead.
if (__FILE__ == $_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_FILENAME'])
// May break on Windows due to mixed DIRECTORY_SEPARATOR
if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME']))
// Doesn't work with files with the same basename but different paths
if (realpath(__FILE__) == realpath($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']))
// Seems to do the trick
Run Code Online (Sandbox Code Playgroud)
if (__FILE__ == $_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']){
die("Direct access forbidden");
}
Run Code Online (Sandbox Code Playgroud)
无论它在哪里,它都可以工作.(欢呼@col-sharpnel指出一个不完整但很好的解决方案.)
有get_included_files函数.您可以像这样使用它:
if ( empty(get_included_files()) ) die("Direct access forbidden");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21636 次 |
最近记录: |