PHP扩展--Suhosin保护PHP应用系统
什么是Suhosin?
Suhosin是一个PHP程序的保护系统。它的设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷。
Suhosin有两个独立的部分,使用时可以分开使用或者联合使用。
第一部分是一个用于PHP核心的补丁,它能抵御缓冲区溢出或者格式化串的弱点;
第二部分是一个强大的PHP扩展,包含其他所有的保护措施。
下载安装补丁
##高版本不需要,折中选择是否打补丁
wget http://download.suhosin.org/suhosin-patch-5.3.3-0.9.10.patch.gz
gunzip suhosin-patch-5.3.3-0.9.10.patch.gz
cd php-5.3.3/
patch -p 1 -i ../suhosin-patch-5.3.3-0.9.10.patch
./configure --with-php-config=/usr/local/bin/php-config
make
make install
安装扩展
wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz
tar zxvf suhosin-0.9.37.1.tar.gz
cd suhosin-0.9.37.1/
phpize
./configure --with-php-config=/usr/local/bin/php-config
make
make install
在php.ini下加入suhosin.so即可
extension=suhosin.so

扩展应用
加密功能
Session加密
SESSION里的数据通常在服务器上的明文存放的。这里通过在服务端来加解密$_SESSION。这样将Session的句柄存放在Memcache或数据库时,就不会被轻易攻破,很多时候我们的session数据会存放一些敏感字段。
这个特性在缺省情况下是启用的,也可以通过php.ini来修改:
suhosin.session.encrypt = On
suhosin.session.cryptkey = zuHywawAthLavJohyRilvyecyondOdjo
suhosin.session.cryptua = On
suhosin.session.cryptdocroot = On
;; IPv4 only
suhosin.session.cryptraddr = 0
suhosin.session.checkraddr = 0
Cookie加密
Cookie在客户端浏览器的传输的HTTP头也是明文的。通过加密cookie,您可以保护您的应用程序对众多的攻击,如
- Cookie篡改:攻击者可能会尝试猜测其他合理的cookie值来攻击程序。
- 跨应用程序使用Cookie:不正确配置的应用程序可能具有相同的会话存储,如所有会话默认存储在/tmp目录下,一个应用程序的cookie可能永远不会被重新用于另一应用,只要加密密钥不同。
Cookie加密在php.ini中的配置:
suhosin.cookie.encrypt = On
;; the cryptkey should be generated, e.g. with 'apg -m 32'
suhosin.cookie.cryptkey = oykBicmyitApmireipsacsumhylWaps1
suhosin.cookie.cryptua = On
suhosin.cookie.cryptdocroot = On
;; whitelist/blacklist (use only one)
;suhosin.cookie.cryptlist = WALLET,IDEAS
suhosin.cookie.plainlist = LANGUAGE
;; IPv4 only
suhosin.cookie.cryptraddr = 0
suhosin.cookie.checkraddr = 0
Blocking Functions
测试
##默认PHP的Session保存在tmp路径下
ll -rt /tmp | grep sess
##扩展未开启时查看某条sesson的数据
cat sess_ururh83qvkkhv0n51lg17r4aj6
//记录是明文的
##扩展开启后查看某条sesson 的数据
cat sess_ukkiiiheedupem8k4hheo0b0v4
//记录是密文的
可见加密对安全的重要性
阻断功能
白名单
##显式指定指定白名单列表
suhosin.executor.func.whitelist = htmlentities,htmlspecialchars,base64_encode
suhosin.executor.eval.whitelist = htmlentities,htmlspecialchars,base64_encode
<?php
echo htmlentities('<test>');
eval('echo htmlentities("<test>");');
黑名单
##显式指定指定黑名单列表
suhosin.executor.func.blacklist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
suhosin.executor.eval.whitelist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
通过日志来查看非法调用黑白名单
suhosin.simulation = 1
suhosin.log.file = 511
suhosin.log.file.name = /tmp/suhosin-alert.log
其他配置项
suhosin.executor.include.max_traversal 扩目录的最大深度,可以屏蔽切换到非法路径
suhosin.executor.include.whitelist 允许包含的URL,用逗号分隔
suhosin.executor.include.blacklist 禁止包含的URL,用逗号分隔
suhosin.executor.disable_eval = On 禁用eval函数
suhosin.upload.max_uploads
suhosin.upload.disallow_elf
suhosin.upload.disallow_binary
suhosin.upload.remove_binary
suhosin.upload.verification_script 上传文件检查脚本,可以来检测上传的内容是否包含webshell特征
参考地址:http://suhosin.org/
PHP扩展--Suhosin保护PHP应用系统的更多相关文章
- php 扩展 suhosin 配置不当引发的报错及其解决方法
1. /var/log/messages 频繁报错: Jul :: localhost suhosin[]: ALERT - script tried to increase memory_limit ...
- SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统
一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ...
- 使用 fail2ban 和 FirewallD 黑名单保护你的系统
如果你运行的服务器有面向公众的 SSH 访问,你可能遇到过恶意登录尝试.本文介绍了如何使用两个实用程序来防止入侵者进入我们的系统. 为了防止反复的 ssh 登录尝试,我们来看看 fail2ban.而且 ...
- ac68u、r8500 梅林固件扩展为一个小型 linux 系统
事先刷 merlin 固件 1.安装 Entware 在安装之前,你需要在路由器中插入一个 U 盘,并将其格式化为 Ext3 / Ext4 格式,插上后在 /mnt/ 下应会多个 sda 设备出来 e ...
- 《华油能源OA系统数据同步和扩展的设计与实现_张宇峰》阅读笔记
为什么我会找到这篇论文? 华油能源集团拥有多套信息化软件系统,每个用户需要登录操作多个软件系统,记住多个系统的用户名.密码,需要不停的切换到每个系统,查看是否有需要进行的工作:管理员更是疲于每天对各个 ...
- Laravel核心解读 -- 扩展用户认证系统
扩展用户认证系统 上一节我们介绍了Laravel Auth系统实现的一些细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是针对我们自己开发的项目或多或少地我们都会需要在自带的看 ...
- 27-SQLServer系统扩展存储过程
一.注意点 1.在SQLServer中,有些系统扩展存储过程,是有风险,需要取消public角色的执行权限. 2.从SQLServer2005开始就不能通过sp_dropextendedproc 删除 ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- Windows系统操作指令汇总
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...
随机推荐
- vs调试时报503错误
开发中遇到了一个神问题,困扰了几个月没解决. 在本机调试,或者用iis服务器直接指向项目目录,访问网页任何页面都是报503. 一直找不到原因,配置文件也修改了,还是解决不了. 今天20170110一次 ...
- iOS- iPad里有趣的UIPopoverController
效果: 1.对UIPopoverController的简单概述 1.1 UIPopoverController是在iPad开发中常用的一个组件(在iPhone上不允许使用),使用非常简单 1.2 ...
- Ligerui首页的快速搭建
一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭建 4.Ligerui Grid组件--学生信 ...
- 关于JS里面写JAVA代码的问题
最近做项目需要在JS脚本里面调用一个JAVA的函数得到数据,在网上查了很久,发现JS脚本里面不能写JAVA函数.只能把JS脚本里面的代码写进JSP文件里面的<script>标签内,然后写J ...
- 查询MySQL某字段相同值得重复数据
1.先查询重复的id: SELECT book_id,COUNT(*) AS COUNT FROM xs_book_source WHERE site_id=5 GROUP BY book_id HA ...
- 如何在flink中传递参数
众所周知,flink作为流计算引擎,处理源源不断的数据是其本意,但是在处理数据的过程中,往往可能需要一些参数的传递,那么有哪些方法进行参数的传递?在什么时候使用?这里尝试进行简单的总结. 使用conf ...
- RT thread 设备驱动组件之USART设备
本文以stm32f4xx平台介绍串口驱动,主要目的是:1.RTT中如何编写中断处理程序:2.如何编写RTT设备驱动接口代码:3.了解串行设备的常见处理机制.所涉及的主要源码文件有:驱动框架文件(usa ...
- 进程间通讯-3(Manager)-实现数据的同时修改
Manager 可以实现列表,字典,变量,锁,信号量,事件等的数据之间的共享.Manager已经默认加锁了.控制数据不会乱. 实现了不同进程之间数据的共享,并且可以同时修改. from multipr ...
- python-输出颜色显示
显示颜色格式:\033[显示方式;字体色;背景色m...主题内容hello world...\033[0m \033 从这里开始标颜色................................. ...
- 3. 无重复字符的最长子串(O(N))
给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. 给定 ...