快速"自上而下"有关PHP包含文件的问题。如果我包含带有SQL DB连接信息的文件,那么在标题包含文件中的每个页面上都包含所有这些文件是否会增加风险?或者我应该根据具体情况包含文件?
据我所知,直到你使用像query()这样的SQL方法才会出现基于SQL的攻击的风险(我认为这是不好的措辞;安全的想法是假设每次攻击都可以随时发生)。但是,我不确定的是,如果通过在每个页面上同时包含所有文件来实例化连接/套接字并为恶意事件敞开大门。
另外,如果我将这些包含在我的文件结构中的密码保护目录后面,我的脚本是否仍然可以访问它们?是否有可能让.htaccess允许这些文件但不允许用户进入目录?
我没有必要访问shell或终端来执行任何根级文件结构或权限,因此任何编辑或实现都需要在根级别之上完成。
再次感谢!
答案 0 :(得分:1)
.htaccess
设置屏蔽。 PHP和Apache是不同的层。 PHP可以访问和包含()任何文件。.inc
等文件扩展名很容易公开连接信息,如果该扩展名实际上并未绑定到PHP处理程序。htdocs/
或其他。答案 1 :(得分:1)
SQL注入是一个漏洞,用户数据被解释为代码。您的包含示例不包含任何用户输入,因此与SQL注入无关。在PHP中,您可以非常轻松地发现注射,因为它们看起来像:
$query = "SELECT a, b FROM t WHERE x = '$val1' AND y = '$val2'";
与
相反$query = "SELECT a, b FROM t WHERE x = :val1 AND y = :val2";
至于问题的第二部分,是的,你可以这样做。 .htaccess
文件仅控制用户可以通过Web服务器请求的内容。文件包含在文件系统级别完成,完全绕过它。实际上,您应该可以直接访问客户端的代码。许多框架都鼓励这种文件夹结构:
/var/www/code/ <-- most PHP code here
/var/www/html/ <-- where your index.php is
如果网络服务器设置为仅提供第二个文件夹中的文件,则任何人都无法读取code
文件夹中的文件。