PHP项目的安全原则

从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)

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
传智播客的PHP课程表是一个系统化的培训计划,旨在帮助学员系统地掌握PHP开发技术。 一、入门阶段: 1. PHP基础:介绍PHP的起源、语法和常用函数。学员将学习如何编写简单的PHP程序,并掌握变量、循环、条件语句等基本概念和技巧。 2. MySQL数据库:学习数据库的创建、增删改查等基本操作,以及PHP与MySQL的结合使用。 二、进阶阶段: 1. 文件与目录操作:学员将了解如何在PHP中处理文件和目录,包括文件的读写、上传下载等操作。 2. 表单与数据验证:学习如何使用HTML表单与PHP进行数据交互,以及如何对用户输入进行有效性验证和安全防护。 3. PHP面向对象编程:引导学员理解面向对象编程的概念和原则,并教授如何使用PHP进行面向对象的程序设计。 4. PHP框架:介绍常用的PHP框架(如Laravel、Yii等),并培养学员使用框架开发大型项目的能力。 三、项目实战阶段: 1. 项目需求分析与设计:学员将学习如何进行项目需求分析、数据库设计、系统架构设计等,为实战项目做好准备。 2. 实战项目开发:学员将参与一个实际的PHP项目开发,运用所学知识解决实际问题,并与团队合作完成项目。 3. 项目部署与上线:学员将学习如何将项目部署到云服务器上,并进行性能优化、安全加固等工作,使项目顺利上线运行。 四、职业素养: 1. 沟通技巧:教授学员在团队协作中的沟通技巧,提升学员的团队合作能力和职业素养。 2. 面试技巧:指导学员如何准备面试,包括简历撰写、面试技巧、常见面试题等。 通过传智播客的PHP课程,学员能够逐步掌握PHP的基础知识和开发技术,并通过实战项目锻炼实践能力,最终达到能够独立进行PHP开发的水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

one行feng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值