php - 在实现其主要功能后在 Web 应用程序中实现安全性是否合理?

标签 php security xss csrf methodology

如果这看起来太模糊而无法发布到 Stackoverflow,请原谅。

我的公司聘请了三名开发人员使用 PHP 和 MySQL 实现分类广告系统。他们已经工作了一个多月,没有使用框架(他们反对使用框架)并且已经实现了基本功能(用户注册和身份验证、广告列表和过滤等)。然而,粗略的测试表明该系统容易受到常见的恶意攻击(CSRF、XSS、本地文件包含)。

检查代码后,我意识到他们没有在服务器端实现数据验证程序(他们仅使用正则表达式来验证邮件地址,并使用 mysqli_real_escape_string() 来清理字符串以防止 SQL 注入(inject))。他们使用 JavaScript 在客户端实现了一些验证例程。显然,这是 UI 的一部分,不提供任何针对恶意用户的安全措施。

他们争辩说,由于三个开发人员不足以从头开发一个完整的网络应用程序(我同意),他们将首先实现功能,然后妥善保护它们,以便在特定期限内完成。无论如何我都不是经验丰富的程序员,但我相信事后实现安全性需要更长的时间。此外,如果他们设法以某种方式做到这一点,与从一开始就实现的数据清理程序相比,这将是不合格的。

因此,我的问题是:(i) 在实现功能后实现安全性(即至少实现适当的清理例程)是否合理? (ii) 如果 (i) 的答案是“否”,您会推荐哪些引用书目、安全框架(但我猜它们本身已嵌入到 Web 框架中)等用于管理安全处理不当的项目?

最佳答案

不,出于多种原因,在项目完成后实现安全性是 Not Acceptable 。首先,正如已经提到的,无论是谁支付这笔费用,他们都不太可能在他们已经拥有他们想要的产品时继续支付实现安全功能的费用。第二个原因是,与第一次正确编码并在编写该代码时实现任何安全措施相比,他们将花费更长的时间来完成并尝试找到所有安全漏洞。这样做也更容易,因为您可以编写安全库,它会为您执行转义数据之类的事情,这样通过对转义函数/方法进行简单调用就可以流畅地编写代码。第三个原因是因为他们绝对不可能通过回头查看代码来找到所有的漏洞。编写没有安全漏洞的代码已经够难的了(几乎不可能),更不用说回过头来找出所有这些安全漏洞了。

至于建议的框架,我真的没有,因为我也从来没有使用过框架,只有我过去写过的库可以使用。然而,这归结为只是找到优秀的开发人员,而不是那些声称可以以超低价格完成它的开发人员。 PHP 开发人员池中充满了这些半吊子的开发人员,我想说他们中有相当一部分人更喜欢预制框架。诀窍是从一开始就找到一些好的。要保护像这样写得不好的应用程序,您真正拥有的唯一选择是获取 WAF(Web 应用程序防火墙)并让它过滤任何发送到服务器的恶意内容。尽管对于写得不好的代码来说,这不是 Elixir 。我什至不会称它为创可贴,更像是冰雹玛丽。

最后一件事是,我非常不同意他们的人手不足,只有 3 个人在写这篇文章。 4 年前,我自己在 3 个月内写了类似的东西(好吧,有一个 html 人)。这 3 个月中有两个是完全重写的部分,因为客户会在完成后改变主意,再加上编写副功能,使它更像是一个社交网络,而不是一个分类网站。如果我能在那么长的时间内自己完成大部分工作,他们应该可以在一个半月内与 3 个人轻松完成(并确保安全)。

关于php - 在实现其主要功能后在 Web 应用程序中实现安全性是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079309/

相关文章:

php - Foreach 和 while 循环打印相同的值

php - 将 Javascript 字符串传递给 PHP 输出

security - SSL key 交换加密技术

javascript - jsbin.com 上的 XSS

javascript - 如何在不使用 + 的情况下将 var 附加到 var.src

php - mysql对查询参数添加权重

php - 针对 SQL 表的验证

.net - .NET 中的序列号(注册码)算法

security - 身份验证入口点 Spring Boot 2

php - HTMLPurifier 破坏图像