我一直在GitHub上阅读一些WordPress PHP代码,我发现作者(高级WordPress开发人员)将这行代码放在每个文件的开头:
defined('ABSPATH') or die("Cannot access pages directly.");
这如何保护文件不被直接访问?黑客不能只定义常量ABSPATH然后加载文件吗?
另外,为什么直接访问很危险?
答案 0 :(得分:7)
这个常量可能是在主WordPress PHP文件中设置的,所以如果没有设置,那么你就不会访问主页面了。
Constants不是用户可以修改的,它们在代码中,只能通过编辑PHP文件来更改。所以,如果一个黑客可以设置这个常数,那么你会遇到更大的问题,因为这会让他真正编辑你的PHP文件。
直接访问可能并不危险(不要引用我),但这是毫无意义的。直接访问WordPress插件(例如)将无法执行任何操作,因为插件需要通过WordPress运行。
答案 1 :(得分:1)
defined('ABSPATH') or die("Cannot access pages directly.");
此常量在index.php等根文件中定义 它用于检查是否定义了ABSPATH,因此该文件包含在root或其他文件中 而不是使用URL直接访问 这种方式是保护文件免受直接访问的最佳方法之一
答案 2 :(得分:0)
Normaly你不能声明服务端变量,因此它是安全的。
最有可能的另一个页面设置根据某些标准变化(通过验证,ip或任何你想要的东西)
正如所说的那样,单独的页面无法工作,因为它需要从某些软件中读取该变量(包含或页面包含在内)
答案 3 :(得分:0)
直接访问可能很危险 - 因为黑客可以解决您的业务逻辑并可能找到解决方法(也就是那些未在代码中编写以保护自己的东西)。
另一种可能性是,事物被硬编码到程序中,可能导致直接访问数据库,获得网络知识等...