PHP开发安全建议TOP20
10.即时所有的事情都做的完美无缺,你构建的php代码仍然存在安全隐患。安全需要永恒的警惕之心。有一件事情你需要时刻保持注意,那就是依赖入流量发送邮件的脚本。许多使用php编写的应用程序使用内置的mail()功能来回应邮件触发的用户流量。
不要盲目的使用信息发送邮件
正如我们在其它的关于php的安全建议中谈到的一样,你要确保适当的过滤和确认用户的输入。如果你没有恰当的过滤入流的话,很可能就有人在你没有注意之前使用电子邮件注入以及发送成千的垃圾邮件。
11.我们都认为用户既是我们开发的程序是天使也是魔鬼。一方面,要是没有用户的话也就不会存在安全问题了。再者,要是没有用户,我们就没有必要开发应用程序了。因此我们认为不能让客户流失。这就是说必须要他们知晓相关的安全问题。我们可以采取如下措施:
最少权限原则
只给予用户最低层次的许可
这是最基本的编程原则,在绝大多数的Unix中可以看到。处理unix中的用户和资源的时候,用户清楚无误的知道自己的访问权限。用户的访问权限只足以访问最基本的资源。我们在开发应用程序的时候也可以借鉴这一概念。
许多现代的php构架都使用了这一概念或是授权访问控制。在Zend构架中,授权是由Zend_Auth处理,但是访问控制是由另外一个Zend_Acl处理的。
不管你使用哪一个结构,一个好的安全策略就是在网页或图片上设置访问限制。不管什么时候,要将用户的访问权限限制到最低程度。
12.我们已经谈论过过滤,确认以及再次谈论过滤。过滤应用程序的输入是一个很重要的概念,它应该先于很多安全策略之前执行。尽管如此,即使你执行了良好的过滤制度和确认制度,这并不意味这你可以高枕无忧了。在编程的整个过程都必须谨记安全问题。
过滤输入让一些程序开发人员产生了安全错觉。他们武断的认为既然已经采取了过滤措施,就没有必要担心安全问题了。在一些简单的程序中可能确实是没有什么问题,但是在一些复杂的程序中就不然了,你要知道使用这些输入是干什么的。在用户在eval()命令使用输入的时候的时候就可以看出。以下是一些建议:
在使用eval()之前认真思考一下
通过在eval()中使用用户输入参数,你很可能给恶意用户访问服务器开了后门。即使你的操作界面仅仅允许他们选择已经设置好的界面,使用你的脚本哄骗,那么你的脚本很可能就会被别有用心之人用来即时执行罪恶的行当。
尽量少使用eval()。当你不得不使用的时候,一定要保证过滤和确认输入的有效性。如果还有其它选择的话,就使用另外的方法。
13.安全要常记心中,而不是偶然为之。它和代码一样为你的程序增彩。尽管如此,你还需要实时监控你的产品环境。那就是我们为什么要选择正确的工具的原因。我之前提过PHPSecInfo,这一工具足以保证自身的安全。
PHPSecInfo可以有效的监视你的产品环境。
PHPSecInfo提供与phpinfo()相似的功能,它可以提供关于php环境的安全信息,并且提供改进建议。但是它并不是安全开发技术的替代品,也不提供任何形式的代码或是程序监测,但是在多层次安全策略中很有效。
对于安全建议,单靠自身是远远不够的。恰当的组合可以发挥很大的效用。
14.几乎所有的应用程序都在使用网络技术的后端用户上运行php,因为这是前期工作。许多开发人员在php安全上苦思冥想,却不注意前期的开发工作。以下就是关于在构建HTML和java脚本时应该考虑的一些问题。
任何位于cookie中的数据都可能被其他人看到——将其降低到最低限度
现在的网络很令人失望,坏人太多。他们等着你的应用程序的信息泄露然后利用这些敏感信息获取利益。评估应用程序安全的时候一定要综合考虑。当你在前期输入数据的时候,这尤其重要。
15.作为开发者,很多人做事很混乱。我曾经做过无数的项目,很多人将大量的测试文件到处乱放。(info.php, test.php, doMe.php,等等)。这些信息如果被别有用心者获得,就会泄露关于系统的有价值的信息。
建议
不要忘记清除临时的系统诊断文件
你很可能会感到后悔,如果你花费大量的时间保护你的应用程序而忘记了info.php,test.php 中的“quick piece of code”可能会泄露关于你的系统的危险信息。不要助纣为戾。
16保证你现在使用的构架实时更新
如果你是在一台临时的机器上工作的话,这尤其重要。考虑谁来维持折合站点是很重要的,如果安全补丁是由第三方文件提供的。
一般来说,这些站点位于一个共享的主机站点上,这就意味着提供商负责维护php,数据库系统,网络服务器等等的实时更新——但是他们很可能不会维护你所安装的构架。
使用构架是一个不错的主意——并不是因为它省去了你很多麻烦,更因为它会及时处理相关的安全隐患。
另一方面还意味着这些构架中的网络安全问题都会被记录下来——也就是说黑客可以寻找出仍在使用的构建的老版本,然后轻易的发动攻击。
现在很多站点使用老掉牙的文件——只是因为没有专人负责升级。即使不是你为超额服务器流量买单——实际上你的邮箱收到了大量的垃圾邮件。













文章评论
共有 位天空网友发表了评论 查看完整内容