PHP开发安全建议TOP20
17.应用程序的安全不是一个所有的措施都失效的情况。不是事后可以处理的。正如我们前面所提到,应用程序的安全没有一个万全的解决之道。安全贯穿于设计的初始,代码编写,测试以及产品成功开发之后的整个阶段。
一位著名的php安全专家曾经给出如下的安全建议:
● 安全是一种措施,而不是特征。
● 安全必须与投入之间寻求平衡
● 安全需要与实用性之间寻找到平衡点
● 安全是设计的一部分
以上对于徘徊在安全设计织之外的人是很好的建议。
18.当你允许用户上传文件,这就意味着你的系统有风险。要限制允许上传的文件类型。不要依赖黑名单策略。
举个例子来说,黑名单不允许上传.php文件,这确实是一个不赖的主意,要是有人上传.htaccess文件的话,黑名单就失去了效用。将恶意代码置于这一文件之中实际上黑名单在客观上帮助了那些居心叵测之人。
AddType应用程序/x-httpd-php .php .htm
它们现在可以上传任何形式的带有php代码的.htm文件,然后就在你的系统内胡作非为。
例如:
| <?php echo system("locate config"); ?> |
很有可能上述代码会提供攻击者位于服务器之内的配置名。这种攻击的可能性是永恒的,仅仅是因为你的服务器未保护的一个上传。
一定要重视文件上传的问题,确保使用白名单政策。确保上传文件的形式是所允许的文件类型。有几种方式可以实现这一目的,最简单的就是检查上传文件的扩展名。这样那些不适当的文件扩展名就会被排除。但是,这不是最安全的做法。
要想实现更加安全的监管,检查PECL扩展名,FileInfo。FileInfo检查 文件的内容并且根据特定的字节顺序猜测内容形式。将FileInfo与白名单政策一起使用的话会在文件上传的时候更加安全的保护你的系统。
19.有时最好的应用程序安全策略就是不要断开服务器与网络的的连接。但是现实生活中是行不通的。考虑安全问题的时候,软件和硬件同样重要。
最安全的应用程序就是不与外界相联系
正如前面所说,这在现实中根本就行不通。但是你可以选择那些服务器可以与外部网络相联系,那些需要布置在防火墙之内。此外还要考虑,防火墙之外的服务器如何与之内的服务器沟通的问题。
Session劫持,XSS, 和XSRF都是开发者必须面临的挑战,我并不是危言耸听。确实在很多情况下,这就意味着末日。对于绝大多数的黑客来说,很容易突破的技术数据库。开发人员面临的最严重的问题就是程序被劫持,数据库受到威胁,以及用户的信任信息在网上的传播。
一个简单的方法就是把数据库服务器移到防火墙之后,这样就可以限制对其的访问。一旦你认识这一问题,你发现还有其它的方法帮助你保护整个系统。
20.最后一条建议,推荐读如下科目:
《Essential PHP Security》
《Pro PHP Security》
《Professional PHP5 Security》
《php|architect's Guide to PHP Security》













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