PHP安全之道学习笔记1:PHP项目安全设置
在全球范围来看,超过了80%的网站是使用php进行搭建的,由于脚本语言和早期版本设计的诸多原因,php项目存在不少安全隐患。从配置选项来看,可以做如下的优化。
- 1.屏蔽PHP错误输出。
在/etc/php.ini(默认配置文件位置),将如下配置值改为Off
display_errors=Off
不要将错误堆栈信息直接输出到网页上,防止黑客加以利用相关信息。
正确的做法是:
把错误日志写到日志文件中,方便排查问题。
- 2.屏蔽PHP版本。
默认情况下PHP版本会被显示在返回头里,如:
Response Headers
X-powered-by: PHP/7.2.0
将php.ini中如下的配置值改为Off
expose_php=Off
- 3.关闭全局变量
如果开启全局变量会使一些表单提交的数据被自动注册为全局变量。代码如下:
<form action="/login" method="post">
<input name="username" type="text">
<input name="password" type="password">
<input type="submit" value="submit" name="submit">
</form>
如果开启了全局变量,则服务器端PHP脚本可以用$username和$password来获取到用户名和密码,这会造成极大的脚本注入危险。
开启方法是在php.ini中修改如下:
register_globals=On
建议关闭,参数如下:
register_globals=Off
当关闭后,就只能从$_POST、$_GET、$_REQUEST里面获取相关参数。
- 4.文件系统限制
可以通过open_basedir来限制PHP可以访问的系统目录。
如果不限制使用下面的脚本代码(hack.php)可以获取到系统密码。
<?php
echo file_get_contents('/etc/passwd');
当设置了后则会报错,不再显示相关信息,让系统目录b不会被非法访问:
PHP Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3
Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3
PHP Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3
Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3
设置方法如下:
open_basedir=/var/www
5.禁止远程资源访问
allow_url_fopen=Off
allow_url_include=Off其他第三方安全扩展
Suhosin
设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷。
PHP7支持版本
Taint
用于xss/sqli/shell注入的检测。
PHP安全之道学习笔记1:PHP项目安全设置的更多相关文章
- golang学习笔记6 beego项目路由设置
golang学习笔记5 beego项目路由设置 前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧: package main ...
- DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析
DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Scrapy:学习笔记(2)——Scrapy项目
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...
- python学习笔记——(一)基础设置
python的学习,今天就开始上开发环境Pycharm,这样以后在调试,使用和学习起来就方便很多. 我用的是JetBrains PyCharm Community Edition 2018.1.1 x ...
- 学习笔记:flutter项目搭建(mac版)
什么是flutter Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的 ...
- postgresql修炼之道学习笔记(1)
好好学习吧. 本笔记 仅作为摘要记录 前两章,主要是数据库对比和安装等. 对比,就比多说了,总是和别人比较,会显得自己身价低,呵呵. 安装也有很多文章,不多说. 第二章提到了一些简单的配置, 其在 d ...
- postgresql修炼之道学习笔记(2)
随后的章节 介绍了基础的sql,这个我略过了,我喜欢在开发的时候,慢慢的研究,毕竟有oracle的基础. 现在,学习psql工具 使用create database创建数据库的时候,出现如下问题: ...
- PHP安全之道学习笔记2:编码安全指南
编码安全指南 编程本身就应该是一门艺术,而安全编程更是一种在刀尖上舞蹈的艺术,不仅要小心脚下的锋利寒刃,更要小心来自网络黑客或攻击者的狂轰乱炸. - by code artist 1.hash比较的缺 ...
随机推荐
- 数据结构c语言
这篇博客是为了对数据结构进行一系列的学习整理,包括线性表,栈和队列,串,数组和广义表,树和二叉树,图,动态储存管理,查找,内部排序,外部排序文件进行部分笔记的记录. 基本概念和术语 数据:是对客观事物 ...
- .Net Core3.0依赖注入DI
构建ASP.NET Core应用程序的时候,依赖注入已成为了.NET Core的核心,这篇文章,我们理一理依赖注入的使用方法. 不使用依赖注入 首先,我们创建一个ASP.NET Core Mvc项目, ...
- java 实现基于opencv全景图合成
因项目需要,自己做了demo,从中学习很多,所以分享出来,希望有这方面需求的少走一些弯路,opencv怎么安装网上教程多多,这里不加详细说明,我安装的opencv-3.3.0 如上图所示,找到相应的j ...
- SpringBoot整合Redis(一)
docker启动redis docker run -p 6379:6379 --name myredis redis 查看容器 [root@topcheer ~]# docker ps -l CONT ...
- PLSQL Developer 超简单使用!!!
PLSQL Developer 简介 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对 ...
- C语言知识体系
吾尝终日而思矣,不如须臾之所学也: 吾尝跂而望矣,不如登高之博见也. 登高而招,臂非加长也,而见者远: 顺风而呼,声非加疾也,而闻者彰. 假舆马者,非利足也,而致千里: 假舟楫者,非能水也,而绝江河. ...
- C# 倒计时,显示天,时,分,秒。时间可以是从数据库捞出来
从数据库把时间读出来,接着 你用个timer控件启用控件,设置1000毫秒timer时间里 用当前时间-你取出的时间 就可以了 DateTime furtime = Convert.ToDateTim ...
- 关于JQUery.parseJSON()函数的知识札记
JSON数据也许大家都很陌生,而对我来讲属于半成品,由于项目问题,做web虽然用的是JSON数据格式传输,但是关于解析这一块还真不知道该注意什么,更不知道它是如何解析的,由于最近要把串口通信协议与此一 ...
- [考试反思]0920csp-s模拟测试48:弱小
注:T1全场46个人里42个AC了. %%%zkt也AK了呢越来越强啊 我是真的越来越弱了吗? 我到底在干什么... 在难度递增的题里分数递增... 考试过程大体还好,但是如此快速地WA掉T1也真是蠢 ...
- [考试反思]0813NOIP模拟测试20
咕了两天,补一下. 4个AK的,210是第10,190的第15并列一大排,我个傻子160排第29. 历史新低,但是心态还好. 真是没想到会一天考两场.中午没回去睡觉晚上考试... 困倒是其次,关键还是 ...