从W3Techs 发布的历年服务器端编程语言使用趋势报告显示,近十年来 PHP 在份额上依旧牢牢占据榜首的位置,报告从 2013 年开始一直持续到 2024年。可以看到 PHP 始终占有 75% 以上的份额,几乎没有遇到比较大的波动。尽管最近几年 PHP 不再流行,大家也一直拿“PHP 是世界上最好的语言”来进行调侃,但从数据上看 PHP 仍是迄今为止最常用的服务器端语言。

查看原文

PHP 占比如此高的一个重要原因就是其简单易用,学习门槛低,但这也导致了很多应用在研发过程中存在着各种漏洞,而这些漏洞在不关注安全代码设计的人员眼里几乎是不可见的。

因此本社群我们将着重讨论 PHP 的项目安全研发问题,引导研发人员对PHP项目安全问题进行深入思考,提高安全意识与技能。

01 不可信原则

PHP主要负责后端服务的运行,而后端服务的执行通常会需要从用户手里获得相应的输入数据,虽然我们会通过前端页面约束用户的输入数据,但只要是对外公开的服务,你就不能相信用户一定会按照你的预期来提交你想要的数据,例如他们可以通过一些工具直接脱开你的前端页面来提交数据,所以在执行后端服务之前,你必须要检查所有的输入数据,否则你将面临SQL注入攻击、上传非法文件、越权等黑客攻击手段。

合法的输入才可以进入流程,这也将最大限度地保证程序的安全。

较为常见的输入数据,会通过 GET / POST 的方式传递给后端服务,而为了能够获取用户身份信息,我们还可以通过获取 Cookie 信息,来判断该请求是哪些用户发来的。

不同的数据会有不同的长度、格式或者类型。如果发现非法数据,我们需要立即执行阻断响应,而不是帮助用户修复数据,不然可能会发生二次污染或遭受攻击。

例如:手机号码的长度必须为11位。

同时,我们也需要努力确保用户无法通过猜测参数的规则来获取他人数据。

02 最小化原则

02.01 权限最小化

研发人员在项目设计过程中必须对用户的每一次数据库操作都进行身份认证。确保将用户的可见范围控制在允许的最小范围中。

最常见的就是一篇文档,只允许作者可以编辑,即使文档的编辑链接被别人知道了,对方也没有权限编辑/访问该页面。

有效地降低系统/数据库被非法用户访问。

02.02 暴露最小化

信息暴露是指用户的数据在传输过程中/保存在数据库后被他人窃取的一种行为。最常见的就是用户输入的登陆密码从前端到后端的过程中,被中间各个路由设备记录成日志信息,存在暴露风险;也有可能是服务提供者的数据库被黑客入侵,导致整个数据库的数据直接被他人获取。

因此研发人员需要注意到信息在传输过程中以及保存在数据库后,是否需要使用加密手段。

最常见的加密手段就是开启https服务,使用安全套接层(Secure Sockets Layer, SSL)对数据在传输过程中加以保护,但这只能说降低了一定的风险。

你也可以通过前端加密,后端解密的方式,来提升数据在传输过程中的安全性。

如果你会查看页面的相关请求,你就会发现乐述云享在获取文章数据的时候,给前端的数据均为加密内容,用户根本没有办法通过请求来获取文章的markdown文本。

因此,即使有路由设备保留/被黑客窃取了相关数据,也是无法直接查看内容的。

世界上没有绝对安全的地方,因此针对于数据库入侵这件事情,我们也不能保证绝对不会发生,因此研发人员在数据库中保存数据的时候,可以直接存储加密过后的数据,在用户需要使用时,再通过算法进行解密,这便将信息暴露控制在了最小范围。

以上所提到过的保护技巧,我们会在未来的文章中为大家一一展示。

03 堡垒机与云防火墙

堡垒机和云防火墙是两个网络安全领域中非常重要的产品,它们的功能和作用不同。

堡垒机一般用于企业内部,对于内部服务器进行安全管理和监控。堡垒机通过对权限的控制,可以避免内部员工越权操作服务器,防止机密信息泄露,提高系统的安全性。

从上图中可以看到,对于企业的VPC资产,均需要通过堡垒机才能访问,而研发人员能够使用哪些VPC资源,也都是由管理员进行资源分配,无法直接获取VPC的访问账号和密码,若因工作调动原因,取消相关人员的访问权限,也只需要通过堡垒机,调整该用户的可访问资源。云端VPC的外网是直接屏蔽的,若用户需要访问该服务器中提供的服务时,就需要用到下一个产品了:云防火墙。

云防火墙用于企业网络的边界,通过过滤网络流量,防止来自外部网络的攻击,保障内部网络的安全。

与堡垒机最大的区别就是,云防火墙负责筛查所有外部流量,只有正常流量,才可以通过云防火墙,并在内网中访问到提供服务的VPC设备。

总之,PHP的安全问题不可小视,在攻防严重不对等的今天,不能只依赖基础安全设备和框架来避免所有的安全威胁,每个研发人员都应该具备安全研发能力,从根本上解决安全问题。

PHP项目的安全原则 - 乐述云享 (aleshu.com)

【社群】PHP开发(安全问题) - 乐述云享 (aleshu.com)

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: