系统管理员必须知道的PHP安全实践

合集下载

PHP环境搭建注意事项

PHP环境搭建注意事项

PHP环境搭建注意事项PHP环境搭建注意事项PHP作为当今最热门的语言,它有着众多的追求者。

对于入门者来说,在PHP环境搭建方面可能会有一些问题。

以下是店铺精心为大家整理的PHP环境搭建的注意事项,希望对大家有所帮助!更多内容请关注应届毕业生网!环境搭建篇:1.修改apache中默认的项目文件夹在httpd.conf中修改DocumentRoot "XXX/htdocs" 为DocumentRoot "E:/Source/PhpStorm"为2.添加apache对php文件的解析(下载的php版本应该是VC6 X86 thread safe否则没有php5apache2_2.dll文件)在httpd.conf中修改#LoadModule vhost_alias_module modules/mod_vhost_alias.so在下一行添加(引号中的位置根据PHP的所在目录而定的,如果php就在apache根目录则如下)LoadModule php5_module "php/php5apache2_2.dll"PHPIniDir "php"AddType application/x-httpd-php .php .html .htm3.为方便本地测试,添加一个虚拟主机a.在C:WindowsSystem32Driversetchosts文件最后添加(如果保存时提示不能修改,hosts->属性->安全->编辑全打上勾) 127.0.0.1 127.0.0.1 b.httpd.conf文件中打开注释Include conf/extra/httpd-vhosts.confc.在extra/httpd-vhosts.conf文件中添加如下配置:DocumentRoot "E:/Source/PhpStorm/SiYuan"ServerName ServerAlias *DirectoryIndex index.html index.phpOptions Indexes FollowSymLinksAllowOverride allOrder allow,denyAllow from allErrorLog "logs/-error.log"CustomLog "logs/-custom.log" commond.重启apache服务器4.开启apache域名重定向在httpd.conf中打开注释LoadModule rewrite_module modules/mod_rewrite.so所有的AllowOverride均改为All5.php.ini中打开对mysql的支持打开注释:extension=php_mysql.dllextension=php_mysqli.dll//如果没有效果的话,还需要如下这般写:(写出全路径)extension=D:/Program/Apache/php/ext/php_mysql.dllextension=D:/Program/Apache/php/ext/php_mysqli.dll注:查看生效方法,phpinfo();页面中查看是否有mysqli这一个栏目5.php.ini中打开对imagecreate()函数的支持,方便绘制验证码。

php工作原理

php工作原理

php工作原理PHP 是一种通用的开源脚本语言,主要用于 web 开发。

它的工作原理如下:1. PHP 脚本:首先,开发人员编写 PHP 脚本,这些脚本包含了一系列的 PHP 代码。

这些代码可以被服务器解释执行,并生成动态的 web 页面。

2. 服务器:PHP 脚本需要在服务器上执行,因此需要一个运行 PHP 的服务器。

常用的 PHP 服务器包括 Apache、Nginx、Microsoft IIS 等。

3. 客户端请求:当用户在浏览器中访问 PHP 网页时,浏览器会发送一个HTTP 请求给服务器,请求的内容包括URL 地址、请求方法(GET、POST 等)和其他相关信息。

4. 服务器处理:服务器接收到来自客户端的请求后,会先解析URL 地址,确定要执行的 PHP 脚本,并将请求的数据传递给PHP 解释器。

5. PHP 解释器:PHP 解释器是服务器上的一个软件,它接收到服务器传递的 PHP 脚本后,会逐行解析执行脚本中的每一条 PHP 代码。

PHP 解释器可以将 PHP 脚本转化为可执行的机器码,并进行相应的操作。

6. 与数据库交互:在 PHP 脚本中,通常会涉及与数据库的交互。

PHP 支持多种数据库系统(如 MySQL、MariaDB、PostgreSQL 等),可以使用数据库相关的函数和扩展来执行数据库查询、插入、更新等操作。

7. 动态页面生成:在执行完 PHP 脚本后,PHP 解释器会根据脚本中的逻辑和数据,生成一个动态的网页。

8. 服务器响应:当 PHP 解释器生成了动态网页后,服务器将其作为 HTTP 响应发送给客户端,浏览器接收到响应后,会解析并渲染该网页。

以上是 PHP 的工作原理,通过编写 PHP 脚本、服务器解析执行、与数据库交互和动态页面生成,PHP 实现了动态网页的构建和展示。

国家开放大学-—网络安全评价—实训2-拒绝服务攻击-TCP SYN Flood攻击与防御

国家开放大学-—网络安全评价—实训2-拒绝服务攻击-TCP SYN Flood攻击与防御

信息安全与管理专业实训报告学生姓名:一、实训名称:拒绝服务攻击-TCP SYN Flood攻击与防御。

二、实训内容1、kali的安装部署2、SYN Flood攻击演示3、观察受攻击目标的系统状态4、防御措施三、实验步骤1、python攻击代码环境:ubuntu/kali +python 2.7.11使用方法如下:mode有三种模式syn攻击、ack攻击、混合攻击,虽说是支持多线程但是多个线程反而不如单线程快,估计是我的多线程弄得有些问题,麻烦这方面比较懂的朋友帮我指点一下。

我电脑是i7-6700单线程也只能这点速度。

cpu1已经使用89%了看一下抓包情况吧,因为只是测试用我也没带tcp的options字段,报文长度也不够64字节,不过也能传到目的地址。

下面是代码:#!/usr/bin/python#-*-coding:utf-8-*-import socketimport structimport randomimport threadingclass myThread (threading.Thread):def __init__(self,dstip,dstport,mode):threading.Thread.__init__(self)self.dstip = dstipself.dstport =dstportself.mode =modedef run(self):attack(self.dstip,self.dstport,self.mode)def checksum(data):s = 0n = len(data) % 2for i in range(0, len(data)-n, 2):s+= ord(data[i]) + (ord(data[i+1]) << 8) if n:s+= ord(data[i+1])while (s >> 16):s = (s & 0xFFFF) + (s >> 16)s = ~s & 0xffffreturn sdef IP(source,destination,udplen):version = 4ihl = 5tos = 0tl = 20+udplenip_id = random.randint(1,65535)flags = 0offset = 0ttl = 128protocol =6check =0source = socket.inet_aton(source)destination = socket.inet_aton(destination)ver_ihl = (version << 4)+ihlflags_offset = (flags << 13)+offsetip_header = struct.pack("!BBHHHBBH4s4s",ver_ihl,tos,tl,ip_id,flags_offset,ttl,protocol,check,source,destination)check=checksum(ip_header)ip_header = struct.pack("!BBHHHBBH4s4s",ver_ihl,tos,tl,ip_id,flags_offset,ttl,protocol,socket.htons(check),source,destination)return ip_headerdef TCP(srcip,dstip,protocol,dp,fg):source = socket.inet_aton(srcip)destination = socket.inet_aton(dstip)srcport=random.randint(1,65535)dstport=dpsyn_num=random.randint(1,4000000000)if fg == 2:ack_num=0else:ack_num=random.randint(1,4000000000) hlen=5zero=0flag=fgwindow=8192check=0point=0tcplen=hlenh_f=(hlen << 12)+flagTCP_head=struct.pack("!4s4sHHHHIIHHHH",source,destination,protocol,tcplen,srcport,dstport,s yn_num,ack_num,h_f,window,check,point)check=checksum(TCP_head)TCP_head=struct.pack("!HHIIHHHH",srcport,dstport,syn_num,ack_num,h_f,window,check,point )return TCP_headdef makepacket(dstip,dstport,fg):srcip=str(random.choice(ip_first))+'.'+str(random.randint(1,255))+'.'+str(random.randint(1,255))+'. '+str(random.randint(1,255))protocol=6ippacket=IP(srcip,dstip,5)+TCP(srcip,dstip,protocol,dstport,fg)return ippacketdef attack(dstip,dstport,mode):if mode == 'syn':fg=2while 1:data=makepacket(dstip,dstport,fg)s.sendto(data,(dstip,dstport))elif mode == 'ack':fg=18while 1:data=makepacket(dstip,dstport,fg)s.sendto(data,(dstip,dstport))elif mode == 'syn&ack':while 1:data=makepacket(dstip,dstport,2)s.sendto(data,(dstip,dstport))data=makepacket(dstip,dstport,18)s.sendto(data,(dstip,dstport))else:print 'DON\'T xia say!'dstip=raw_input('attack IP:')dstport=int(input('attack PORT:'))mode=raw_input('mode:(syn or ack or syn&ack)') threads=int(input("线程数threads:"))ip_first=[]for i in range(1,10):ip_first.append(i)for i in range(11,172):ip_first.append(i)for i in range(173,192):ip_first.append(i)for i in range(193,224):ip_first.append(i)s = socket.socket(socket.AF_INET,socket.SOCK_RAW,6) s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)threads_name=[]for i in range(threads):threads_name.append('teread'+str(i))for i in range(threads):threads_name[i]=myThread(dstip,dstport,mode)for i in range(threads):threads_name[i].start()2、C语言攻击代码环境:ubuntu/kali gcc version 6.1.1 20160802 (Debian 6.1.1-11)使用方法:支持两个参数目的ip和目的端口性能:限制发包速度的是带宽(我这是100M的网,除去报文的前导码和帧间隔极限速度差不多就是9m左右了),cpu利用才27%,我在1000Mbps的网速下测试,单线程的话速度能到40m左右,cpu占用率大约85%左右。

Web安全开发实践

Web安全开发实践

Web安全开发实践在当今数字化时代,Web应用程序已经成为了现代生活中不可替代的重要组成部分。

无论是进行购物、社交、娱乐、学习等等,人们都离不开Web应用程序。

然而,由于Web应用程序的高度互联性以及访问量的大幅增加,Web安全问题也开始频繁地出现,给用户的个人隐私以及企业的金融安全带来了极大的威胁。

因此,Web安全开发实践也就显得格外重要了。

一、什么是Web安全Web安全是一门综合性学科,主要针对Web应用程序的安全问题进行研究和防范。

在Web应用程序中,由于程序本身存在漏洞或者系统环境存在问题,黑客可以通过各种方式(包括SQL注入、跨站点脚本攻击、跨站点请求伪造等)非法获取或者篡改用户的数据,以及窃取企业的核心数据和财务信息。

因此,Web安全开发实践的目的就是为了准确识别并尽可能避免或消除这些安全问题,防止黑客的攻击和用户的信息泄漏。

二、 Web安全开发实践的重要性由于Web应用程序使用的是公共网络,用户的计算机和Web服务器之间的交互是建立在HTTP协议上的,这就使得Web应用程序容易受到各种攻击,从而面临巨大的安全风险。

另外,随着互联网技术和黑客技术的不断进步,攻击方式也在不断增多、变化和升级。

因此,Web安全开发实践对于确保Web应用程序的安全性就显得尤为重要了。

仅仅对Web安全性进行测试无法解决根本问题,开发人员或Web安全专家应该在Web应用程序的开发周期内集成Web安全实践,确保Web应用程序在设计、开发、测试、发布和运营等环节都达到从安全角度考虑下最优的状态。

三、 Web安全开发实践的最佳实践要想保证Web应用程序的安全性,下面的建议可作为最佳实践:1. 开发人员必须具备一定的Web安全知识,清楚地了解Web安全攻击的类型、攻击手段以及防范方法等基础知识。

2. 开发时应遵循安全编程规范,采用最佳的编码习惯(例如,不要使用比较薄弱的密码存储方式)减少Web安全方面的漏洞。

3. 应当在开发周期的各个阶段对Web应用程序进行安全性测试,以确保Web应用程序从设计时就考虑了安全问题,可以防止潜在的安全威胁。

基于PHP+MySQL-学生成绩管理系统论文(模板)

基于PHP+MySQL-学生成绩管理系统论文(模板)

一绪论 (3)1.1课题简介 (3)1.2项目开发的目标 (3)二系统分析 (4)2.1需求分析 (4)2.2系统设计分析 (4)2.2.1 用户功能区 (4)2.2.2 管理员功能区 (5)三概念结构设计 (6)3.1各个实体的局部ER图 (6)3.2系统功能模块图 (7)3.2.1总体设计 (7)3.2.2 学生用户模块 (8)3.2.3 管理员模块 (9)四逻辑结构设计 (9)4.1数据库设计与实现 (9)4.1.1数据库技术的现状与发展 (10)4.2数据库逻辑结构设计 (11)五系统功能设计与实现 (14)5.1系统前台 (14)5.2系统后台 (17)一绪论1.1 课题简介随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

学生成绩信息的管理是不容出错的,其学生基本信息、成绩管理等这些琐碎而又细致的工作,工作量是很大的,而且也不容许出错。

如果是手工管理这些的话,那将耗费工作人员大量的时间和精力。

用计算机来管理这些信息是非常方便,而且出错率小,可靠性高,查找方便,存储量也大。

这些优点能够极大地提高对学生成绩管理的效率,也是管理趋向信息化重要条件。

本系统是弥补某些学校成绩管理的不足,创建的一套行之有效的计算机成绩管理的方案。

1.2 项目开发的目标建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。

帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。

为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。

(2)不同用户有不同的查询和修改权限,防止非法查询,非法修改。

(3)方便用户的操作,尽量减少用户的操作。

thinkphp后台管理系统

thinkphp后台管理系统

thinkphp后台管理系统ThinkPHP是一款高效、开放、安全的PHP Web应用框架,具有强大的功能和极高的性能,受到了广泛的欢迎和使用。

借助ThinkPHP框架,开发者可以轻松快速地开发出功能丰富、性能优异的Web应用。

为了更好地满足业务需要,现今许多企业都采用基于ThinkPHP框架的后台管理系统,以便高效地管理和监控企业各项数据和业务。

ThinkPHP后台管理系统的功能包括:1. 管理员账号管理:管理员可以根据需求添加、修改、删除、查看管理员账号,以确保系统安全。

2. 权限管理:系统管理员可以设置各个用户的权限,如增、删、改、查、审核等,以确保系统安全和数据准确性。

3. 数据管理:用户可以根据需要添加、修改、删除、查询系统中的各种数据,如订单数据、用户数据、商品数据等。

4. 统计分析:系统可以根据用户的需求,按照不同的维度进行数据分析,如订单量、销售额、用户访问量等。

5. 通知管理:管理员可以通过邮件、短信等方式向用户发送通知,提醒他们及时处理订单、处理问题等。

6. 日志管理:可以记录用户的操作记录,包括操作时间、操作人员、操作内容等,以便于快速定位问题和查找日志记录。

7. 报表查询:用户可以根据需求进行自定义报表查询,如商品销售报表、用户访问量报表等。

8. 消息管理:系统可以在后台管理界面内,提供消息推送功能,管理员可以发布系统通知、公告等。

9. 广告管理:管理员可以管理广告投放内容和位置,以便提高广告点击率和转化率。

在使用ThinkPHP后台管理系统时,我们需要注意以下事项:1. 账号安全性:管理员必须谨慎管理各种账号和权限,以确保系统的安全性。

2. 数据安全性:管理员必须确保数据的安全性,避免恶意用户通过系统漏洞窃取敏感数据。

3. 网络安全性:管理员必须确保网络的安全性,避免黑客攻击和DDoS攻击等,对于网络安全问题,我们应该采用针对性的技术手段和安全措施。

4. 系统维护更新:系统管理员必须及时维护和更新系统,避免因为过时漏洞和安全隐患而造成系统的崩溃和数据的丢失。

php权限设计方案

php权限设计方案

php权限设计方案PHP权限设计方案在开发一个Web应用程序时,权限管理是非常重要的一项工作。

合理的权限设计可以保证应用程序的安全性和稳定性。

下面我将提出一个基于角色的权限设计方案。

一、用户角色的划分根据应用程序的特点和需求,将用户划分为不同的角色,比如普通用户、管理员、超级管理员等。

每个角色具备不同的权限。

二、权限的管理1. 权限表:创建一个权限表,用于存储系统中的所有权限。

表的字段包括权限ID、权限名称、权限描述等。

可以使用面向对象的方式来封装权限相关的操作。

2. 角色表:创建一个角色表,用于存储系统中的所有角色。

表的字段包括角色ID、角色名称、角色描述等。

可以使用面向对象的方式来封装角色相关的操作。

3. 用户角色关联表:创建一个用户角色关联表,用于存储用户和角色之间的关系。

表的字段包括用户ID、角色ID等。

可以使用面向对象的方式来封装用户角色关联相关的操作。

三、权限校验的实现在每个需要权限校验的页面或操作中,根据当前用户的角色,判断其是否具备访问或操作的权限。

1. 登录检测:在每个需要权限校验的页面或操作中,先检测用户是否登录,如果未登录则跳转至登录页面。

2. 权限校验:根据当前用户的角色,通过查询用户角色关联表,获取用户所具备的权限。

然后比对所需的权限,如果用户具备该权限,则允许访问或操作,否则提示无权限。

四、页面展示的控制根据用户的不同角色,控制页面上的权限展示。

比如普通用户登录后,只能看到部分页面,而管理员和超级管理员登录后可以看到所有页面。

可以通过在页面上进行相应的判断和控制来实现。

五、权限的维护1. 权限的添加、编辑和删除:可以在后台管理系统中加入权限的添加、编辑和删除功能,允许管理员对权限进行维护。

2. 角色的权限分配:可以在后台管理系统中加入角色的权限分配功能,允许管理员对角色的权限进行分配。

3. 用户的角色分配:可以在后台管理系统中加入用户的角色分配功能,允许管理员对用户的角色进行分配。

网络安全管理实验报告

网络安全管理实验报告

网络安全管理实验报告一、实验背景在当前数字化信息社会中,网络安全问题日益突出,各种网络攻击和数据泄漏事件频频发生,给个人、组织和国家的信息安全带来了严重威胁。

因此,网络安全管理变得尤为重要。

本次实验旨在通过模拟网络攻击和应对,探讨网络安全管理的方法和策略。

二、实验环境在实验中,我们搭建了一个包含服务器、防火墙、网络入侵检测系统(IDS)和网络安全管理系统的网络环境。

通过设置虚拟机和网络设备来模拟实际网络环境,以便进行实验操作和分析。

三、实验过程1. 模拟网络攻击:我们首先对网络环境进行了弱密码攻击、端口扫描和拒绝服务(DDoS)攻击等常见攻击手段的模拟,以测试网络设备和系统的弱点和稳定性。

2. 防火墙配置:针对模拟攻击中暴露的安全漏洞,我们设置了防火墙规则来限制网络流量,防止恶意攻击和未经授权的访问。

3. IDS监测:网络入侵检测系统负责监控网络流量,识别异常行为和潜在的攻击,及时发出警报并记录相应日志。

4. 安全策略优化:通过对实验过程中的攻击和防御数据进行分析,我们调整和优化了网络安全管理策略,提高了网络的整体安全性。

四、实验结果经过一系列的实验操作和分析,我们成功防护了模拟攻击,并取得了以下成果:1. 防火墙有效拦截了弱密码攻击和DDoS攻击,并在攻击行为发生时及时进行阻断处理,确保了网络的正常运行。

2. IDS系统准确地识别了入侵行为,并发出了警报通知管理员,使其能够及时采取应对措施,防止进一步的损失。

3. 通过对安全策略的优化和调整,网络整体的安全性得到了提升,防御效果显著。

五、实验总结通过本次网络安全管理实验,我们深刻认识到网络安全对于信息社会的重要性,也更加明确了网络安全管理的重要性和复杂性。

在未来的工作中,我们将继续学习和研究网络安全领域的知识,不断提升网络安全管理能力,为网络安全事业做出贡献。

综上所述,本次网络安全管理实验取得了一定的成果,但也暴露了一些不足之处。

我们将持续学习和改进,不断提升网络安全管理水平,为建设安全可靠的网络环境而努力奋斗。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统管理员必须知道的PHP安全实践PHP是一种开源服务器端脚本语言,应用很广泛。

Apache web服务器提供了这种便利:通过HTTP或HTTPS 协议,访问文件和内容。

配置不当的服务器端脚本语言会带来各种各样的问题。

所以,使用PHP时要小心。

以下是25个PHP安全方面的最佳实践,可供系统管理员们安全地配置PHP。

为PHP安全提示而提供的示例环境•文件根目录(DocumentRoot):/var/www/html•默认的Web服务器:Apache(可以使用Lighttpd或Nginx来取代Apache)•默认的PHP配置文件:/etc/php.ini•默认的PHP加载模块配置目录:/etc/php.d/•我们的示例php安全配置文件:/etc/php.d/security.ini(需要使用文本编辑器来创建该文件)•操作系统:RHEL/CentOS/Fedora Linux(相关指令应该与Debian/Ubuntu等其他任何Linux发行版或者OpenBSD/FreeBSD/HP-UX等其他类似Unix的操作系统兼容)。

•默认的php服务器TCP/UDP端口:无为本文所列的大多数操作编写代码时,假定它们将由运行bash外壳程序或其他任何现代外壳程序的根用户来执行:$ php -v示例输出:PHP 5.3.3 (cli) (built: Oct 24 2011 08:35:41)Copyright (c) 1997-2010 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies出于演示的用途,我会使用以下操作系统:$ cat /etc/redhat-release示例输出:Red Hat Enterprise Linux Server release 6.1 (Santiago)第1个最佳实践:了解你的对手基于PHP的应用程序面临不同类型的攻击。

我注意到了几种不同类型的攻击:1. XSS:跨站脚本是Web PHP应用程序中的一种安全漏洞,攻击者可以利用该漏洞来窃取用户的信息。

你可以配置Apache,编写更安全的PHP脚本(验证所有的用户输入),以避免XSS攻击。

2. SQL注入攻击:这是PHP应用程序的数据库层中的安全漏洞。

用户输入不正确地过滤时,应用程序就能执行任何SQL语句。

你可以配置Apache,编写安全代码(验证和转换所有的用户输入),以避免SQL注入攻击。

PHP中的一个常见做法是,在发送SQL查询之前,使用名为mysql_real_escape_string()的函数,转换参数。

3. 文件上传:它让访客可以将文件放在(将文件上传到)你的服务器上。

这会带来众多安全问题,比如删除你的文件、删除数据库、获取用户详细资料,不一而足。

你可以使用php来禁用文件上传,或编写安全代码(比如验证用户输入,只允许PNG或GIF等图像文件类型)。

4. 添加本地和远程文件:攻击者可以从远程服务器打开文件,执行任何PHP代码。

这让他们得以上传文件、删除文件和安装后门。

可以配置php以禁用远程文件执行功能。

5. eval() :将字符串作为PHP代码来进行评估。

攻击者常常利用该函数来隐藏其在服务器本身上面的代码和工具。

你可以配置PHP,禁用eval()。

6. sea-surf攻击(跨站请求伪造,CSRF):这种攻击迫使最终用户针对目前已验证其身份的Web应用程序执行有害的操作。

如果是平常的用户,得逞的CSRF攻击会危及最终用户的数据和操作。

但如果被盯上的最终用户使用管理员帐户,这会危及整个Web应用程序。

第2个最佳实践:查找内置的PHP模块想查看一组编译进去的PHP模块,请输入以下命令:# php -m示例输出:[PHP模块]apcbcmathbz2calendarCorectypecurldatedomeregexiffileinfo filterftpgdgettext gmphashiconvimapjsonlibxml mbstring memcache mysql mysqli openssl pcntlpcrePDOpdo_mysql pdo_sqlite Phar readline ReflectionsessionshmopSimpleXMLsocketsSPLsqlite3standardsuhosintokenizerwddxxmlxmlreaderxmlrpcxmlwriterxslzipzlib[Zend模块]Suhosin我建议你使用模块数量减少的PHP,以增强性能和安全。

比如说,你可以通过删除(移除)配置文件或者更名(或移动)一个名为/etc/php.d/sqlite3.ini的文件来禁用sqlite3模块,操作如下:# rm /etc/php.d/sqlite3.ini或者# mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable其他编译进去的模块只能通过重新安装精简配置的PHP来移除。

可以从下载php源代码,然后按以下方法编译它,支持GD、fastcgi和MySQL:./configure --with-libdir=lib64 --with-gd --with-mysql --prefix=/usr--exec-prefix=/usr第3个最佳实践:限制PHP信息泄露要限制PHP信息泄露,就要禁用expose_php。

编辑/etc/php.d/secutity.ini,执行以下指令:expose_php=Off启用后,expose_php向外界报告PHP安装在服务器上,这包括HTTP头里面的PHP版本(如X-Powered-By:PHP/5.3.3)。

PHP标识的全局唯一标识符(GUID,见示例/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42)也显示出来,因而将它们添加到支持PHP的网站的URL后面,就会显示相应标识。

expose_php启用后,你可以使用以下命令,查看PHP版本:$ curl -I /index.php示例输出:HTTP/1.1 200 OKX-Powered-By: PHP/5.3.3Content-type: text/html; charset=UTF-8Vary: Accept-Encoding, CookieX-Vary-Options:Accept-Encoding;list-contains=gzip,Cookie;string-contains=wikiToken;string-c ontains=wikiLoggedOut;string-contains=wiki_sessionLast-Modified: Thu, 03 Nov 2011 22:32:55 GMT...我还建议,你应在httpd.conf中执行ServerTokens和ServerSignature命令,隐藏Apache版本及其他信息(/faq/rhel-centos-hide-httpd-version/)。

第4个最佳实践:尽量减少可装入的PHP模块(动态加载模块)PHP支持“动态加载模块”(Dynamic Extensions)。

默认情况下,RHEL装入/etc/php.d/目录里面的所有加载模块。

要启用或禁用某一个模块,只要在/etc/php.d/目录中找到配置文件、为模块名称添加注释。

你还可以更名或删除模块配置文件。

想获得最佳的PHP性能和安全,你应该只启用Web应用程序需要的加载模块。

比如说,要禁用gd加载模块,输入以下命令:# cd /etc/php.d/# mv gd.{ini,disable}# /sbin/service httpd restart要启用名为gd的php模块,请输入:# mv gd.{disable,ini}# /sbin/service httpd restart第5个最佳实践:将所有PHP错误记入日志别让PHP错误信息暴露在网站的所有访客面前。

编辑/etc/php.d/security.ini,执行以下指令:display_errors=Off确保你将所有PHP错误记入到日志文件中(/tips/php-howto-turn-on-error-log-file.html):log_errors=Onerror_log=/var/log/httpd/php_scripts_error.log第6个最佳实践:不允许上传文件出于安全原因,编辑/etc/php.d/security.ini,执行以下命令:file_uploads=Off如果使用你应用程序的用户需要上传文件,只要设置upload_max_filesize(/faq/linux-unix-apache-increase-php-upload-limit/),即可启用该功能,该设置限制了PHP允许通过上传的文件的最大值:file_uploads=On# 用户通过PHP上传的文件最大1MBupload_max_filesize=1M第7个最佳实践:关闭远程代码执行如果启用,allow_url_fopen允许PHP的文件函数——如file_get_contents()、include语句和require 语句——可以从远程地方(如FTP或网站)获取数据。

allow_url_fopen选项允许PHP的文件函数——如file_get_contents()、include语句和require语句——可以使用FTP或HTTP协议,从远程地方获取数据。

编程员们常常忘了这一点,将用户提供的数据传送给这些函数时,没有进行适当的输入过滤,因而给代码注入安全漏洞留下了隐患。

基于PHP的Web应用程序中存在的众多代码注入安全漏洞是由启用allow_url_fopen和糟糕的输入过滤共同引起的。

编辑/etc/php.d/security.ini,执行以下指令:allow_url_fopen=Off出于安全原因,我还建议禁用allow_url_include:allow_url_include=Off第8个最佳实践:启用SQL安全模式编辑/etc/php.d/security.ini,执行以下指令:sql.safe_mode=On如果启用,mysql_connect()和mysql_pconnect()就忽视传送给它们的任何变量。

请注意:你可能得对自己的代码作一些更改。

sql.safe_mode启用后,第三方开源应用程序(如WorkdPress)及其他应用程序可能根本运行不了。

相关文档
最新文档