PHP Sec:.inc文件实践,用于减轻基于SQL的攻击媒介

时间:2015-07-17 01:35:08

标签: php mysql security

快速"自上而下"有关PHP包含文件的问题。如果我包含带有SQL DB连接信息的文件,那么在标题包含文件中的每个页面上都包含所有这些文件是否会增加风险?或者我应该根据具体情况包含文件?

据我所知,直到你使用像query()这样的SQL方法才会出现基于SQL的攻击的风险(我认为这是不好的措辞;安全的想法是假设每次攻击都可以随时发生)。但是,我不确定的是,如果通过在每个页面上同时包含所有文件来实例化连接/套接字并为恶意事件敞开大门。

另外,如果我将这些包含在我的文件结构中的密码保护目录后面,我的脚本是否仍然可以访问它们?是否有可能让.htaccess允许这些文件但不允许用户进入目录?

我没有必要访问shell或终端来执行任何根级文件结构或权限,因此任何编辑或实现都需要在根级别之上完成。

再次感谢!

2 个答案:

答案 0 :(得分:1)

  • 连接代码与SQL注入无关。
  • 连接代码的运行时间,地点和频率也不相关。
  • 包含脚本未被.htaccess设置屏蔽。 PHP和Apache是​​不同的层。 PHP可以访问和包含()任何文件。
  • 包含脚本的.inc等文件扩展名很容易公开连接信息,如果该扩展名实际上并未绑定到PHP处理程序。
  • 以上"根级"通常只是表示DOCUMENT_ROOT中的一个目录。即使是最简单的主机通常也允许创建一个相邻的目录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文件夹中的文件。