我正在完成我的第一个“真正的”PHP应用程序,我正在努力确保它是安全的。我有点害怕,因为我不是一个“专家”PHP程序员,我可能会遗漏一些巨大的东西,所以我想给你一些关于我的应用程序的信息,希望你能告诉我这是不是案件。所以我们走了:
htmlentities()
输出所有表格和数据库数据(即使我认为是安全的东西)。当我第一次开始编写我的应用程序时,我不知道准备好的语句,这是一个很大的问题。我错过了什么吗?
答案 0 :(得分:5)
OWASP维护Top 10 Most Critical Web Application Security Risks的列表(警告,PDF下载)。这是从2010年开始,但我认为它仍然适用,现在也许更多。
注入和XSS是前两个,但你应该知道其他的8.如果你使用的是现有的CMS,其中许多可能已经被考虑过了,但CMS越受欢迎,你就越有可能遇到由于黑帽试图在其中找到漏洞而导致的漏洞。
如果您没有存储信用卡,订单历史记录,地址甚至是电子邮件等关键数据,那么只要您采取的方式,我就不会担心太多关于您的网站受到影响基本的预防措施(听起来像你一样)。
答案 1 :(得分:3)
如果您担心安全问题,那么好的资源就是OWASP - Top 10 Application Security Risks
答案 2 :(得分:2)
在Web应用程序(特别是PHP')中最重要的是 Data Validation 从用户那里获得的所有输入进一步保存在您的数据库中。
对于安全应用程序,所有事务都应在HTTPS上完成。对于安全的Cookie管理,应实施 Secure and HTTPOnly Cookie。
答案 3 :(得分:1)
我还没有提到更多的观点。其中大部分都与代码无关 - 我不确定你是否只希望得到与代码相关的内容,但无论如何我都会提到它们。
答案 4 :(得分:1)
总有一件事情要做。可用性:)安全性有三个方面:
你几乎做得很好并且照顾了前两个(凭据,准备好的声明,htmlentities ......)但是没有一个能帮助对抗DoS攻击。您应该能够检测是否有人拍打您的站点并禁止攻击者ip从您的服务器。虽然这可以在PHP中完成(在php的第一行踢攻击者要比让他们初始化框架,数据库连接等更好),但它可以在较低层有效地完成(例如:nginx / apache, iptables,snort)。
然而,您所要求的通常是风险管理问题。在实际应用中,您无法为所有可能的攻击,边缘情况等做好准备。您需要做的是根据概率和影响对所有风险进行分类(http://www.jiscinfonet.ac.uk/InfoKits/infokit-related-files/Resources/Images/risk-matrix)。通过这种方式,您可以首先关注最重要(最高)的风险,并且可能完全忽略底部的下部。
答案 5 :(得分:0)
SQL Injection和XSS是最突出的Hacking方法。
如果您使用预准备语句,则可以使用SQL注入。
此外,如果htmlentities()在您显示HTML的任何地方,您应该是安全的。