PHP进阶玩法
1. 删除不必要的模块。
PHP随带内置的PHP模块。它们对许多任务来说很有用,但是不是每个项目都需要它们。只要输入下面这个命令,就可以查看可用的PHP模块:
# php - m
一旦你查看了列表,现在可以删除不必要的模块。减少模块的数量有助于提高你所处理的Web应用程序的性能和安全
2. 限制PHP信息泄露。
平台泄露关键信息司空见惯。比如说,PHP会泄露一些信息,比如版本以及它安装到服务器上的事实。这可以通过expose_php命令来实现。为了防止泄露,你需要在/etc/php.d/security.ini中将该命令设成off。
expose_php=Off
如果你需要了解版本及其状态,只要针对网站地址运行一个简单的Curl命令就可以获得该信息。
Curl - I http://www.livecoding.tv/index.php
之前的命令会返回下列信息:
HTTP/1.1 200 OK
X-Powered-By: PHP/7.0.10
Content-type: text/html; charset=UTF-8
3. 禁用远程代码执行.
远程代码执行是PHP安全系统方面的常见安全漏洞之一。默认情况下,远程代码执行在你的系统上已被启用。“allow_url_fopen”命令允许请求(require)、包括(include)或可识别URL的fopen包装器等函数可以直接访问PHP文件。远程访问通过使用HTTP或FTP协议来实现,会导致系统无力防御代码注入安全漏洞。
为了确保你的系统安全可靠、远离远程代码执行,你可以将该命令设成“Off”,如下所示:
Allow_url_fopen=Off
allow_url_include=Off
4. 将PHP错误记入日志。
加强Web应用程序安全的另一个简单方法就是,不向访客显示错误。这将确保黑客根本无法危及网站的安全性。需要在/etc/php.d/security.ini文件里面进行编辑。
display_errors=Off
现在你可能会想:完成这一步后,“开发人员在没有错误信息的帮助下如何调试?”开发人员可以使用log_errors命令来用于调试。他们只需要在security.ini文件中将log_errors命令设成“On”。
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
5. 合理控制资源。
为了确保应用程序的安全,控制资源很重要。为了确保适当的执行和安全,你就要对PHP脚本执行予以限制。此外,还应该对花在解析请求数据上的时间予以限制。如果执行时间受到控制,脚本使用的内存等其他资源也应该会得到相应配置。所有这些度量指标可通过编辑security.ini文件来加以管理。
# set in seconds
max_execution_time = 25
max_input_time = 25
memory_limit = 30M
6. 禁用危险的PHP函数
PHP随带用于开发的实用函数,但是也有可能被黑客用来闯入Web应用程序的大量函数。禁用这些函数可以提高总体安全性,并确保你没有受到危险的PHP函数的影响。
为此,你先要编辑php.ini文件。一旦进入该文件,找到disable_functions命令,禁用里面的危险函数。为此,你只要拷贝/粘贴下列代码。
disable_functions =exec,passthru,
shell_exec,system,proc_open,popen,curl_exec,
curl_multi_exec,parse_ini_file,show_source
你可以在此(https://www.eukhost.com/blog/webhosting/dangerous-php-functions-must-be-disabled/)进一步了解禁用危险的PHP函数。
7. 上传文件。
如果你的应用程序不需要上传任何文件,禁用上传文件的功能有助于提高安全。想禁止用户上传文件,只需要编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设成OFF。
file_uploads=Off
8. 保持版本最新。
开发人员在24/7不间断地工作,给你使用的技术打上补丁。PHP也是一样。由于它有一个开源社区,补丁和修正版定期发布。更新版还为首日漏洞及其他安全漏洞提供了安全补丁。如果你注重应用程序的安全性,就要始终确保你的PHP解决方案是最新版本。另外,给其他相关技术打上最新的补丁可以确保最大限度的安全。
9.控制文件系统访问。
默认情况下,PHP可使用fopen()等函数来访问文件。open_basedir命令提供了访问。首先,始终要将open_basedir命令设成/var/www/html目录。将它设成其他任何目录会导致安全问题。
open_basedir="/var/www/html/"
10. 控制POST大小。
我们的最后一个PHP安全要点是控制POST大小函数。HTTP POST函数使用客户端的浏览器,将数据发送到Web服务器。比如说,用户可能上传证书,然后发送到Web浏览器以便处理。一切都运行顺畅,直到有一天黑客企图发送庞大的文件来耗尽服务器资源。这很可能会导致服务器崩溃或响应缓慢。为了保护服务器远离这个漏洞,就需要设置POST大小。POST大小可以在/etc/php.d/security.ini文件里面加以设置。
post_max_size=1k
PHP进阶玩法的更多相关文章
- Python的生成器进阶玩法
Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8 ...
- WPF 3D球及进阶玩法
在WPF中3D球的构建算法请参考: https://www.cnblogs.com/lonelyxmas/p/9844951.html 好玩以及值得借鉴的Demo: (CSDN下载需要积分,避免你 ...
- 超详细的格式化输出(format的基本玩法)
一.format的基本玩法 一.什么是format format是字符串内嵌(字符串内嵌:字符串中再嵌套字符串,加入双引号或单引号)的一个方法,用于格式化字符串.以大括号{}来标明被替换的字符串 fo ...
- 【转】4G18的低成本NA玩法
首先是要再次强调一次,4G18的缸径是76MM,冲程是87.5MM.属于典型的长冲程低转发动机! 这种设计的优点是比较适合市区走停的工作状况,省油. 如果要针对改装方案而言因为这种低转时便可输出大扭矩 ...
- [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法
1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下 ...
- git分布式版本控制玩法
git分布式版本控制玩法 Git distributed version control play github的配置安装步骤:1.下载git bash(从http://www.git-scm.com ...
- 自定义 checkbox 新玩法 ?
自定义 checkbox 新玩法 ? 第一步:selector 编写 drawable/selector_checkbox_voice.xml <?xml version="1.0&q ...
- 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...
- 十五天精通WCF——第九天 高级玩法之自定义Behavior
终于我又看完了二期爱情保卫战,太酸爽了,推荐链接:http://www.iqiyi.com/a_19rrgublqh.html?vfm=2008_aldbd,不多说,谁看谁入迷,下面言归正传, 看看这 ...
随机推荐
- CSAPP 之 AttackLab 详解
前言 本篇博客将会介绍 CSAPP 之 AttackLab 的攻击过程,利用缓冲区溢出错误进行代码注入攻击和 ROP 攻击.实验提供了以下几个文件,其中 ctarget 可执行文件用来进行代码注入攻击 ...
- 10┃音视频直播系统之 WebRTC 中的数据统计和绘制统计图形
一.数据统计 在视频直播中,还有一项比较重要,那就是数据监控 比如开发人员需要知道收了多少包.发了多少包.丢了多少包,以及每路流的流量是多少,才能评估出目前用户使用的音视频产品的服务质量是好还是坏 如 ...
- 面试官:BIO、NIO、AIO是什么,他们有什么区别?
哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,感觉上次的公司氛围不 ...
- 爬取百度页面代码写入到文件+web请求过程解析
一.爬取百度页面代码写入到文件 代码示例: from urllib.request import urlopen #导入urlopen包 url="http://www.baidu.com& ...
- python之loggin模块与第三方模块
目录 logging模块详解 第三方模块 openpyxl模块 logging模块详解 主要组成部分 logger对象,用于产生日志 # 第一步,创建logger对象 logger = logging ...
- 【原创】项目一GoldenEye
实战流程 1,通过nmap查找本段IP中存活的机器 ┌──(root㉿whoami)-[/home/whoami/Desktop] └─# nmap -sP 192.168.186.0/24 排查网关 ...
- 借助SpotBugs将程序错误扼杀在摇篮中
背景 最近一年多在一家toB业务的公司,部门主要做的是建筑行业的招投标业务信息化,希望借助软件来达到"阳光.降本.提效"的目的,我刚入职时大概30多家客户,截止现在已经超过100家 ...
- Elasticsearch学习系列一(部署和配置IK分词器)
Elasticsearch简介 Elasticsearch是什么? Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储.检索数据.本身扩展性很好,可扩展 ...
- 2.shell脚本99乘法表
shell脚本99乘法表 [root@localhost data]# vim cf.sh
- zabbix配置邮件报警
1.yum源安装sendmail,sendmail-cf和mailx 2.关闭postfix,/etc/init.d/postfix stop chkconfig posfix off 3.启动sen ...