PHP安全设置(转载)

大家都知道PHP已经是当前最流行的Web应用编程语言了。但是也与其他脚本语言一样,PHP也有几个很危险的安全漏洞。所以在这篇教学文章中,我们将大致看看几个实用的技巧来让你避免一些常见的PHP安全问题。

技巧1:使用合适的错误报告

一般在开发过程中,很多程序员总是忘了制作程序错误报告,这是极大的错误,因为恰当的错误报告不仅仅是最好的调试工具,也是极佳的安全漏洞检测工具,这能让你把应用真正上线前尽可能找出你将会遇到的问题。

当然也有很多方式去启用错误报告。比如在
php.in 配置文件中你可以设置在运行时启用

启动错误报告






1 error_reporting(E_ALL);

停用错误报告






1 error_reporting(0);

技巧2:不使用PHP的Weak属性

有几个PHP的属性是需要被设置为OFF的。一般它们都存在于PHP4里面,而在PHP5中是不推荐使用的。尤其最后在PHP6里面,这些属性都被移除了。

注册全局变量


register_globals
被设置为ON时,就相当于设置Environment,GET,POST,COOKIE或者Server变量都定义为全局变量。此时你根本不需要去写
$_POST[‘username‘]来获取表单变量‘username‘,只需要‘$username‘就能获取此变量了。

那么你肯定在想既然设置
register_globals 为 ON
有这么方便的好处,那为什么不要使用呢?因为如果你这样做将会带来很多安全性的问题,而且也可能与局部变量名称相冲突。

比如先看看下面的代码:






1 if( !empty$_POST[‘username‘] ) && $_POST[‘username‘] == ‘test123′ && !empty($_POST[‘password‘] ) && $_POST[‘password‘] == “pass123″ )






2 {






3 $access = true;






4 }

如果运行期间,
register_globals 被设置为ON,那么用户只需要传输 access=1
在一句查询字符串中就能获取到PHP脚本运行的任何东西了。

在.htaccess中停用全局变量






1 php_flag register_globals 0

在php.ini中停用全局变量






1 register_globals = Off

停用类似 magic_quotes_gpc, magic_quotes_runtime,
magic_quotes_sybase 这些Magic Quotes

在.htaccess文件中设置






1 php_flag magic_quotes_gpc 0






2 php_flag magic_quotes_runtime 0

在php.ini中设置






1 magic_quotes_gpc = Off






2 magic_quotes_runtime = Off






3 magic_quotes_sybase = Off

技巧3:验证用户输入

你当然也可以验证用户的输入,首先必须知道你期望用户输入的数据类型。这样就能在浏览器端做好防御用户恶意攻击你的准备。

技巧4:避免用户进行交叉站点脚本攻击

在Web应用中,都是简单地接受用户输入表单然后反馈结果。在接受用户输入时,如果允许HTML格式输入将是非常危险的事情,因为这也就允许了JavaScript以不可预料的方式侵入后直接执行。哪怕只要有一个这样漏洞,cookie数据都可能被盗取进而导致用户的账户被盗取。

技巧5:预防SQL注入攻击

PHP基本没有提供任何工具来保护你的数据库,所以当你连接数据库时,你可以使用下面这个mysqli_real_escape_string
函数。






1 $username = mysqli_real_escape_string( $GET[‘username‘] );






2 mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”);

好了,在这篇简短的文章中,我们阐述了几个开发过程中不能忽视的PHP安全性问题。但是最终是否使用,如何使用还是开发人员来决定的。希望这篇文章能帮助到你们。

PHP安全设置(转载),布布扣,bubuko.com

时间: 2024-12-18 11:22:45

PHP安全设置(转载)的相关文章

Kali-linux安装之后的简单设置--转载

1.更新软件源:修改sources.list文件:leafpad /etc/apt/sources.list然后选择添加以下适合自己较快的源(可自由选择,不一定要全部): #官方源deb http://http.kali.org/kali kali main non-free contribdeb-src http://http.kali.org/kali kali main non-free contribdeb http://security.kali.org/kali-security k

mongoDB之用户及权限设置 转载 还没有仔细查看细节东西

之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问.想想很不对劲还是设置下用户授权吧. 我部署的环境是windows下MongoDB2.4.8版本.首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下: D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs

华为 安卓手机在MAC系统下调试模式设置(转载)

同时做IOS开发的同学,使用MACOS会发现在ANDROID 开发环境完整的情况下,接入MOTO,SAMSUNG,HTC,ZTE等手机都可以自动识别,并可以在DDMS中查看LOGCAT,唯独华为的手机不可识别.USB开发调试也设置了,在WINDOWS下可以识别,为什么呢?别急,有工程模式: 在拨号界面输入:*#*#2846579#*#* 找到-$amp;>quot;$ProjectMenuAct"->"后台设置"->"USB端口设置" 改

WinForm 快捷键设置(转载)

1.Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上一个指定字母即可.如:确定(&D),(Alt+D)调用. 如指定多个字母,则第一个为快捷键.如:确定(&OK),(Alt+O)调用;文件(&Fill),(Alt+F)调用. 2.Ctrl+*及其他组合键 把 Form 的 KeyPreview 属性设为 True 使用Modifiers

Eclipse自动生成作者、日期注释等功能设置(转载)

在使用Eclipse 编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的. 修改作者.日期注释格式:打开Windows->Preferences->Java->Code Style->Code Templates,点击右边窗口中的Comments,可以看到有很多选项,我们便可对此注释信息模板进行编辑. 如我们希望在一个Java文件的开头设置作者信息.日期信息. 选择Types,点击Edit,将 /** * @author ${user} * ${tags} */

[mysql]深入Mysql字符集设置[转载]

http://www.laruence.com/2008/01/05/12.html 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等: • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding).例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码: • 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set).例如,给定字

VMware 虚拟机桥接网络设置

一.桥接的基本原理 配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样可以访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网.主机与虚拟机之间,以及各虚拟机之间都可以互访.对应虚拟机就被当成主机所在以太网上的一个独立物理机来看待,各虚拟机通过默认的VMnet0网卡与主机以太网连接,虚拟机间的虚拟网络为VMnet0.这时你的虚拟机就像局域网中的一个独立的物理机一样.虚拟机中的操作

【转载】mysql binlog日志自动清理及手动删除

说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-bin.000003mysql-bin.000004mysql-bin.000005…有三种解决方法:1.关闭mysql主从,关闭binlog:2.开启mysql主从,设置expire_logs_days:3.手动清除binlog文件,> PURGE MASTER LOGS TO ‘MySQL-bin

cookie的secure、httponly属性设置

cookie的secure.httponly属性设置 转载自:http://www.cnblogs.com/alanzyy/archive/2011/10/14/2212484.html 一.属性说明: 1 secure属性 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容. 2 HttpOnly属性 如果在Cookie中

Ubuntu命令设置ip网关dns

本文系转载,介绍Ubuntu如何设置IP和网络来连接网络 如果是在虚拟机中使用Ubuntu,那么设置之前请先参照我的上一遍文章虚拟机Net方式设置连接外网中的网络设置部分,先设置好主机的网络,然后配置虚拟机Ubuntu的IP和网关 如果主机操作系统就是Ubuntu,请直接参照下文进行设置 转载内容如下: 1. 检验是否可以连通,就使用ping命令ping 网关 开始的时候总是现实unreachable 2. 设置IP sudo ifconfig eth0 133.133.133.190 netm