PHP开发安全建议TOP20

网络整理 - 07-27

  1.时刻升级你的php版本

  正如其它编程语言一样,PHP的缺陷也会逐渐暴露出来。使用和及时更新最新的php版本将有助于你保证应用程序的安全,高效和稳定。

  2.朦胧的安全根本就不是安全,同时你也不想泄露关于你的网站的信息。以下的建议看似简单,实则在现实生活中很容易被人们忽视。

  确保在你的网站上不展现错误以及关于你网站潜在的信息泄露

  只要在你的产品服务器的php.ini中如下设置即可:display_errors = Off,这样就可以有效防范信息泄露从而给防止黑客知晓关于你的系统结构的的信息。一般的默认设置是display_errors = On.

  3.有安全意识固然不错,但这是远远不够的。

  开发者在面临安全问题的时候一定要有警惕之心。即使你不能单独处理这一问题。只要是应用程序都不可避免的存在大量的安全隐患,只不过是没有爆发出来而已。第三方安全软件有助于找出你没有注意到的安全缺陷。

  作为网站开发人员,手头上一定要有专门的工具帮助你找出应用程序的缺陷。Chorizo可以帮助你自动扫描代码。诸如PHPSecInfo一样的程序帮助你确保配置环境的安全。

  使用诸如此类的扫猫工具并不足以保证100%的安全。尽管如此,仍然是组安全策略中很重要的一部分。一定是使用值得信赖的开发商帮助你构建和维护安全的应用程序。

  4.模糊的安全根本就不是安全,但模糊安全策略必不可少。

  尽管如此,实际当你恰当的使用模糊安全策略的时候也不是为一个好的选择。那些心怀不轨的人实际上就是想把事情弄的很复杂。

  装有机密信息的文件夹和文件不要使用默认的名称。

  不要使用使用艰深晦涩的文件名保证你的应用程序的安全。应该不断的检查网络许可,使用测试工具测试漏洞,利用网络日志监视异常行为。当你设计应用程序和网站的时候,不要让坏人轻易的如愿以偿。文件名和目录名不要使用默认的或是很简单的名称。

  5.php是一个永恒的使命,它要求程序员跳出程序的参数思考问题。仅仅思考“我所设计的东西会按照我的想法一样吗”,你还要思考,“其他人会利用我设计的东西干些什么,我允许他们这样做吗”。以下的安全建议是所有的程序员都应该知道的。

  永远不要相信用户

  这样说也许是有点悲观,但是用户确实就是恶魔。用户只不过是想找出你的程序的缺陷。一旦你自己降低安全要求,并且认为“我只不过是卖点小玩意,客户能有什么能耐呢”,这时候你已经输掉了这场战争。

  过滤入流量,远离出流量(FIEO)

  确实,FIEO是所有的程序员都应该牢记的安全咒语。

  6.在PHP中编写安全程序不仅仅是编写一长串PHP代码就够了。

      许多程序使用数据库或是类似的东西。很多情况下,导致整个应用程序漏洞的就是在构建SQL代码的时候。以下有一条简单的解决之道。

  处理SQL字符串中的数字的时候,一定要计算。

  即使你是在过滤入流量,一个简单而行之有效的安全策略就是把所有的数值都放到SQL报表中。我们以这个代码为例子。

      $myId = filter_var($_GET['id'],FILTER_VALIDATE_INT);
  $sql = 'SELECT * FROM table WHERE id = '.$myId;

  尽管你使用的是PHP 5.2版本内置的php过滤器,你还可以有其它的选择,试一下下面这个:

      $myId = filter_var($_GET['id'],FILTER_VALIDATE_INT );
  $sql = 'SELECT * FROM table WHERE id = '.(int)$myId;

  最后的变量就是变成一个int就会让所有的可以变量远离MySQL.上面的例子故意简化了。在实际情况中,代码更加复杂,产生错误的风险也更大。通过使用最后的计算构建一个精选的报表,这样你就提高了应用程序的安全等级。