原标题:PHP项目安全:PHP的安装与升级

PHP脚本通过PHP解析器解析进行执行,PHP解析器本身会存在安全漏洞,合理地安装使用PHP解析器可以提高系统的安全性。

当PHP各版本中发现存在安全漏洞时,PHP官方会及时发布安全补丁来修复漏洞,应该时刻关注PHP官方发布的最新发版。表1所列是各个PHP版本的CVE漏洞数量。在每个版本中官方都会及时发布新版来修复安全漏洞,要对PHP及时升级,降低系统的安全隐患。

表1 PHP各版本的CVE漏洞数量

在PHP 4、PHP 5这些历史版本中由于支持不安全的MySQL函数,如果研发人员不重视安全问题,任意拼接字符串,那么会经常性地引起SQL注入漏洞。

在PHP 7中,有几个比较重大的改动,这些改动对于提高应用安全性有很大帮助。

1)PHP 7中移除了一些不安全的函数。如移除了对于MySQL函数的支持,MySQL函数在许多情况下是不安全的,经常由于使用不当而造成SQL注入;移除了对ereg函数的支持,ereg函数存在%00截断漏洞,导致了正则过滤被绕过。

2)在PHP 7中,password_hash函数的盐(salt)选项被弃用,因为研发人员会生成自己的salt,通常自己生成的salt是不安全的。该功能本身提供salt的加密安全,函数内部默认带有salt能力,无须研发人员提供salt。

3)capture_session_meta函数中的SSL上下文选项被弃用,PHP 7中通过stream_get_meta_data函数使用SSL元数据。

4)PHP 7中允许在代码中增加标量类型说明,有效地防止了因数据转换造成的安全隐患。PHP 7中标量类型声明有如下两种模式。

强制模式:强制模式是默认模式,不需要指定。强制模式代码示例如下。

functionsum(int …$ints) {

returnarray_sum($ints);

}

print(sum(6,'6',6.1));

上述强制模式执行代码输出“18”。

严格模式:严格模式必须明确标明。给每一个PHP文件,添加一个新的可选指令“declare(strict_types=1);”可让同一个PHP文件内的全部函数调用和语句返回,都有一个“严格约束”的标量类型声明检查,且必须按指定变量类型来进行赋值,使变量传递变得更加安全,否则PHP会抛出错误异常。下面代码是严格模式的示例。

declare(strict_types=1);

functionsum(int …$ints) {

returnarray_sum($ints);

}

print(sum(6,'6',6.1));

图1所示是严格模式的执行输出结果。由于传入参数与定义参数的数据类型不一致,因此PHP抛出了异常。

图1 PHP 7标量的严格模式

5)在PHP 7版本中使用了更安全的随机数生成器,添加了更好的随机数random_int、random_bytes,并用其代替PHP 5的mt_rand。代码示例如下。

var_dump(random_int(100,999)); // 输出int(521)

var_dump(random_int(-1000,0)); // 输出int(-660)

random_bytes函数返回string类型,并接收一个int类型为参数,该参数规定了所返回字符串的字节长度。代码示例如下。

$bytes=random_bytes(5); // 指定5字节长度

var_dump(bin2hex($bytes)); // 输出string(10) "a435b73450"

1、尽量减少非必要模块加载

加载尽量少的模块在优化PHP性能的同时增加了安全性,使用php -m命令可以查看当前PHP加载的模块。

php-m

[PHP Modules]

bcmath

bz2

Core

Redis

[Zend Modules]

Suhosin

例如,如果用不到Redis或者ImageMagick,则完全可以将其禁用,以避免不必要的漏洞引起的安全问题。如下在配置文件中添加分号(;)将所在模块行注释化,PHP在启动后就不会加载Redis和ImageMagick模块。

#cat /etc/php.ini

; extension=php_redis.so # 禁用Redis扩展

; extension=imageick.so # 禁用Imageick扩展

2、使用第三方安全扩展

Suhosin是PHP项目的一个保护系统,它的设计初衷是为了保护服务器和用户抵御PHP项目和PHP核心中已知或者未知的缺陷。

Suhosin有两个独立的部分,可以分开使用或者联合使用。第一部分是一个用于PHP核心的补丁,它能抵御缓冲区溢出或者格式化串的弱点;第二部分是一个强大的PHP扩展,它包含其他所有的保护措施。更多的信息可以到Suhosin的官方网站进行学习。

Taint是一个用于检测xss/sqli/shell注入的PHP扩展模块,用来监测来自GET、POST、Cookie中的数据。这些从客户端接收到的数据如果没有经过过滤或转义处理而被服务端直接使用,Taint会抛出安全提示信息来警示研发人员。返回搜狐,查看更多

责任编辑:

php项目升级包制作,PHP项目安全:PHP的安装与升级相关推荐

  1. C#实现自动更新之(程序升级包制作)

    前言 做客户端(C/S)系统开发的人都会遇到软件的自动更新:系统发布后怎样自动的更新程序? ①更新程序与任何宿主程序是完全独立的:只要在主程序里面启动更新程序就行了: ②更新程序也是一个可执行文件,在 ...

  2. 为利用 QT 制作的项目设置图标

    为利用 QT 制作的项目设置图标 在 .pro 文件末尾添加语句 RC_ICONS = logo.ico logo.ico 即为图标文件的名称

  3. asp.net core web 解决方案多项目模板制作打包总结

    一.文件夹\项目结构 1.1.文件夹 net6.0:针对.net 6.0 项目模板 net6.0pack:针对net6.0打包 1.2.项目结构 Web\WebApi多项目.各层项目.单元测试项目 目 ...

  4. c++项目,制作GIF动态图

    项目目录 项目背景 项目简介 项目可行性分析 第三方库以及项目工具介绍 项目总体设计流程图 项目详细设计 项目测试 项目结果 项目源代码 项目背景 在很多时候,人们所说的一句话在不同的的环境和状态下回 ...

  5. unity 使用姿态传感器制作互动项目--太极平衡桩

    使用深圳维特智能WT931姿态传感器来制作互动项目,就是一个人站在平衡桩上,同步控制场景中的迷宫模型旋转,从而让小球进入洞里面.画面大概是这样的. 需要使用WT931姿态传感器和三合一模块,以及长一点 ...

  6. 网页设计与制作教程 项目1

    网页设计与制作教程 项目1 Hello 大家好,我是白熊就是白熊 欢迎各位有缘人来看我的文章(●'◡'●) 今天跟大家分享一下老师教我们在课堂上敲写的一些项目,今天就先分享一下项目1(适用于初学者), ...

  7. VisualStudio2022制作多项目模板及Vsix插件

    一.安装工作负载 在vs2022上安装"visual studio扩展开发 "工作负载 二.制作多项目模板 导出项目模板这个我就不再多说了(项目→导出模板→选择项目模板,选择要导出 ...

  8. 【Inno Setup】安装包制作,项目打包方案

    系列文章 MySQL安装教程(详细) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程(详细) 本文 ...

  9. VS2005 ASP.NET2.0安装项目的制作(包括数据库创建、站点创建、IIS属性修改、Web.Config文件修改)

    站点: 如果新建默认的Web安装项目,那它将创建的默认网站下的一个虚拟应用程序目录而不是一个新的站点.故我们只有创建新的安装项目,而不是Web安装项目.然后通过安装类进行自定义操作,创建新站如下图: ...

  10. 简历制作(项目经验)

    Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握项目开发的基本步骤 2.具备极强的面向对象的分析与设计技巧 3.掌握用例驱 ...

最新文章

  1. Oracle数据库对象,同义词、序列、视图、索引
  2. SPCAMLEditor–灵活实用的CAML编辑工具(上)
  3. java读取欧姆龙plc_欧姆龙CJ2M系列PLC与PLC之间的数据相互读取设定
  4. Educational Codeforces Round 65 (Rated for Div. 2) D. Bicolored RBS
  5. 一、Vmware安装Centos7虚拟机
  6. Linux内核驱动GPIO的使用
  7. redis源码剖析(十二)—— RDB持久化
  8. C语言显示相位的程序,【图片】求助大佬用c语言帮忙编写下程序【c程序吧】_百度贴吧...
  9. 软考倒计时7天:题目书中的易混点
  10. 【Python】strip()方法
  11. pymysql安装_pymysql 模块简单使用
  12. 程序员面试金典——5.8像素设定
  13. Java二叉树的建立
  14. .net core使用ef 6
  15. python实现触摸精灵功能_触摸精灵实现找图功能
  16. python春节对客流量的影响_2018年2月各城市地铁日均客流、春节长假日均客流分析...
  17. SpaceDesk PC版+安卓版(安装包下载)
  18. 微信小程序订阅消息定时发送消息
  19. 前端解决图片404的问题
  20. 【本人秃顶程序员】求求你别再写 bug 了,秃顶程序员告诉你避免空指针的 5 个案例!

热门文章

  1. LGOJP1850 换教室
  2. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_5_端口号...
  3. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_3_转换流的原理...
  4. pc端字体大小自适应几种方法
  5. composer 设置代理
  6. UGUI ScrollRect使用
  7. OJ-1:时钟问题【九度1553】
  8. java中String字符串
  9. 红帽学习笔记[RHCSA] 第五课[用户、权限相关]
  10. 欢迎来到德莱联盟(一)