PHP的5个安全措施小结

开发人员、数据库架构师和系统管理员在部署PHP应用程序到服务器之前都应该采取预防措施。大部分预防措施可以通过几行代码或者把应用程序设置稍作调整即可完成。

  #1:管理安装脚本

  如果开发人员已经安装了一套第三方应用程序的PHP脚本,该脚本用于安装整个应用程序的工作组件,并提供一个接入点。大多数第三方软件包都建议在安装后,删除该目录包含的安装脚本。但开发人员希望保留安装脚本,他们可以创建一个.htaccess文件来控制管理访问目录。

  AuthType Basic

  AuthName “Administrators Only”

  AuthUserFile /usr/local/apache/passwd/passwords

  Require valid-user

  任何未经授权的用户,如果试图访问一个受保护的目录,将会看到一个提示,要求输入用户名和密码。密码必须匹配指定的“passwords”文件中的密码。

  #2:头文件

  在很多情况下,开发人员可以将分布在应用程序的几个脚本包含进一个脚本里。这些脚本将包含一个“include”指令,集成单个文件到原始页面的代码里。当“include”文件包含敏感信息,包括用户名、密码和数据库访问密钥时,该文件的扩展名应该命名成“.php ",而不是典型的“.inc”扩展。“.php”扩展确保php引擎将处理该文件,并防止任何未经授权的访问。

  #3: MD5 vs. SHA

  在某些情况下,用户最终会创建自己的用户名和密码,而站点管理员通常会对表单提交的密码加密,并保存在数据库中。在过去的几年中,开发人员会使用MD5(消息摘要算法)函数,加密成一个128位的字符串密码。今天,很多开发人员使用SHA-1(安全散列算法)函数来创建一个160位的字符串。

  #4: 自动全局变量

  php.ini文件中包含的设置称为“register_globals”。P服务器会根据register_globals的设置,将会为服务器变量和查询字符串自动创建全局变量。在安装第三方的软件包时,比如内容管理软件,像Joomla和Drupal,安装脚本将引导用户把register_globals设置为“关闭”。将设置改变为“关闭”可以确保未经授权的用户无法通过猜测变量名称及验证密码来访问数据。

  #5: 初始化变量和值

  许多开发人员都落入了实例化变量不赋值的陷阱,原因可能由于时间的限制而分心,或缺乏努力。身份验证过程中的变量,应该在用户登录程序开始前就有值。这个简单的步骤可以防止用户绕过验证程序或访问站点中某些他们没有权限的区域

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

mysql总结之explain - 2015-05-24 14:05:25

explain主要用于sql语句中的select查询,可以显示的查看该sql语句索引的命中情况,从而更好的利用索引、优化查询效率。 Explain语法如下:explain [extended] select ... 其中extended是选用的,如果使用的extended,那么explain之后就可以使用show warnings查看相应的优化信息,也就是mysql内部实际执行的query。 列名 描述 说明 相关链接 id 若没有子查询和联合查询,id则都是1。 Mysql会按照id从大到小的顺序执行q
今天在写PHP程序的时候总是出现这样的错误:Parse error: syntax error, unexpected end of file in *.php on line *,然后我就根据提示,找到那个文件,然后错误中总是提示最后一行出错,我找到最后一行发现是/html,晕的,这能有什么错误,找了好久才找到问题所在,拿来分享。 出现这个错误的原因就是语法错误,肯定是PHP程序的书写不规范造成,我后来一条一条看才发现,原来是PHP语句标识符错了,正常情况下应该是这样的:?php 你的PHP语句?,我写
php setcookie函数的参数说明 用法: setcookie(name,value,expire,path,domain,secure) 参数 描述 name 必需。规定 cookie 的名称。 value 必需。规定 cookie 的值。 expire 可选。规定 cookie 的有效期。 path 可选。规定 cookie 的服务器路径。 domain 可选。规定 cookie 的域名。 secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 setcookie("web
背景、概述 早在Sql注入横行的前几年,字符串转化为整数就已经被列为每个web程序必备的操作了。web程序将get或post来的id、整数等值强制经过转化函数转化为整数,过滤掉危险字符,尽可能降低系统本身被Sql注入的可能性。 现如今,虽然Sql注入已经逐渐淡出历史舞台,但是,为了保证web程序的正常运行,减少出错概率,更好的保证用的满意度,我们同样需要将用户的不正确输入转化为我们所需要的。 转化方式 在PHP中,我们可以使用3种方式将字符串转化为整数。 1.强制类型转换方式 强制类型转换方式,就是“在要
首先使用一个ini文件来设置要缩放的大小,其中为宽或高0的则为图片放大或缩小,都为0则还是原大小,都不为0都拉抻成指定的大小。 注意:ini文件使用php解释时为注释文件,什么也没有输出,这是为了安全起见而故意为之。而;则是ini文件的注释。 我设置的ini文件例子如下: 复制代码 代码如下: ?php /* ;Translate the image format using the original image size [Translation] width=0 height=0 ;Stretch th

PHP导入Excel到MySQL的方法 - 2015-05-24 14:05:21

研究了一下~方法不少~最后决定用Excel导入~在网上搜了很多这方面的资料,发现都是将excel文件另存为csv文件,然后从csv文件导入。这里介绍一个直接将excel文件导入mysql的例子。我花了一晚上的时间测试,无论导入简繁体都不会出现乱码,非常好用。 PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader 说明: PHP将EXCEL导入MYSQL的测试环境:MYSQL数据库采用utf8编码.导入EXCEL文档是xls格
核心代码如下: 复制代码 代码如下: ?php $now=time(); $oc = array( 'team_type' = 'normal', "begin_time '{$now}'", "end_time '{$now}'", ); $p="p2"; $pp1=""; $pp2=""; $now = time(); switch ($p) { case "p1": $pp1="team_price 10"; $pp2=""; break; case "p2": $pp1="team_price 10

PHP中的traits简单使用实例 - 2015-05-24 14:05:11

PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。 Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法: ?phptrait myTrait{ function traitMethod1(){} function traitMethod2(){}}//然后是调用这个traits,语法为:class myClass{ use myT

PHP生成条形图的方法 - 2015-05-24 11:05:28

本文实例讲述了PHP生成条形图的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: ?php // create an array of values for the chart. These values // could come from anywhere, POST, GET, database etc. $values = array(23,32,35,57,12,3,36,54,32,15,43,24,30); // now we get the number of valu

PHP图像处理类库及演示分享 - 2015-05-24 11:05:28

简单写了一个PHP的图像处理类库,虽然功能比较少,但是目前也没用到太高级的,以后用到了再填吧,或者哪位给点建议加上什么功能,或者有什么需求可以跟我说,我有时间加上,如果哪位对这个类库进行了扩展的话,还麻烦拿出来大家分享一下,代码现在是能用就行,考虑的东西不是很多,有什么更好的建议请告诉我,谢谢 Img.php ?php/** * Created by PhpStorm. * User: MCtion * Date: 2015/5/14 0014 * Time: 15:36 * 简单的图像类库,本类中所有相