关于register_globals设置的问题

 更新时间:2016年11月25日 15:18  点击:2253
基于各种各样的理由,PHP 的设置需要依赖于 register_globals
参数打开,但是也成为安全的重要隐患,请看下面的一段代码:
<?php
if (authenticate_user()) {
$authenticated = true;
}
...
?>
远程用户可以简单的传递 'authenticated' 作为表单变量,即使
authenticate_user() 函数返回 false,$authenticated 还是会设置成 true。这是一个简单的例子,你或许会说,我的程序不会这样来写。
而实际上,在稍微复杂一些的应用里面,这个机制就会成为重大的漏洞。
因此,新版本的 PHP ,我们建议用户不要采用这个变量来控制应用,虽然我们没有打算要在不久的将来删除。
为了帮助用户建立 register_globals 设置为 off 的应用,增加了一些变量来代替旧的,下面是7 个新的数组:
$_GET - 包含了通过 GET 发送的表单变量
$_POST - 包含了通过 POST 发送的表单变量
$_COOKIE - 包含了 HTTP cookie 变量
$_SERVER - 包含服务器端变量 (例如:REMOTE_ADDR)
$_ENV - 包含环境变量
$_REQUEST - GET 变量,POST 变量和 Cookie 变量的混合,通过用户而来而不能信任的变量。
$_SESSION - 包含通过会话模块注册的 HTTP 变量
这些变量,在任何范围内,都自动设置为全局变量,可以在任何地方调用,而不需要加 global 关键字。
例如:
function example1()
{
print $_GET["name"]; // 没有必要写成:'global $_GET;'
}
另外一个值得一提的小窍门是在 $_SESSION 数组中增加一个记录能自动作为会话变量注册,就像你调用了
session_register() 函数。

运行PHP软件包的安装程序,在弹出的欢迎窗口中单击“Next”按钮,接着在“许可协议”窗口中单击“I Agree”按钮,然后在安装类型(Installation Type)窗口中选择“标准(Standard)”安装,点击“Next”按钮后,指定PHP的安装目录,建议使用默认安装目录。接着“Mail configuration”窗口中设置邮件地址和指定SMTP服务器,在“服务类型(Server Type)”窗口中选择你使用的Web服务器的类型(如图2),因为我们使用Windows XP系统自带的IIS5.1,选择“Microsoft iis4 or higher”单选项,点击“下一步”后开始安装,最后在“IIS Scriptmap Node selection”窗口中选中所有的站点(如图3),点击“OK”按钮,就完成了PHP的安装和配置。
图3选中所有站点
    检查PHP调试环境配置
  进入到“控制面板→管理工具”,运行Internet信息服务程序,右键点击“默认网站”在弹出的菜单中选择“属性”,接着在弹出的属性对话框中切换到“主目录”标签页,点击应用程序设置栏中的“配置”按钮,弹出“应用程序配置”对话框,在“映射”标签页中,查看应用程序映射列表框中是否有扩展名为“.php”的选项(如图4),如果存在则表示PHP安装配置成功。
图4查看程序映射
    如果没有找到该选项,也可以手工添加。在应用程序配置对话框中点击“添加”按钮,弹出“添加/编辑应用程序扩展名映射”对话框(如图5),在“可执行文件”栏中输入“php.exe”程序路径,“扩展名”中输入“.PHP”,其它选项使用默认设置,最后点击“确定”按钮即可。
图5手工添加映射
    这样就完成了PHP调试环境的配置,以后就可以在IIS中调试PHP文件了。

AuthName directive
Syntax: AuthName auth-domain
Context: directory, .htaccess
Override: AuthConfig
Status: core
This directive sets the name of the authorization realm for a directory. This realm is given to the client so that the user knows which username and password to send. AuthName takes a single argument; if the realm name contains spaces, it must be enclosed in quotation marks. It must be accompanied by AuthType and require directives, and directives such as AuthUserFile and AuthGroupFile to work.
--------------------------------------------------------------------------------
AuthType directive
Syntax: AuthType type
Context: directory, .htaccess
Override: AuthConfig
Status: core
This directive selects the type of user authentication for a directory. Only Basic and Digest are currently implemented. It must be accompanied by AuthName and require directives, and directives such as AuthUserFile and AuthGroupFile to work.
--------------------------------------------------------------------------------
BindAddress directive
Syntax: BindAddress saddr
Default: BindAddress *
Context: server config
Status: core
A Unix® http server can either listen for connections to every IP address of the server machine, or just one IP address of the server machine. Saddr can be
*
An IP address
A fully-qualified Internet domain name
If the value is *, then the server will listen for connections on every IP address, otherwise it will only listen on the IP address specified.
Only one BindAddress directive can be used. For more control over which address and ports Apache listens to, use the Listen directive instead of BindAddress.
BindAddress can be used as an alternative method for supporting virtual hosts using multiple independent servers, instead of using <VirtualHost> sections.
See Also: DNS Issues
See Also: Setting which addresses and ports Apache uses
KeepAliveTimeout directive
Syntax: KeepAliveTimeout seconds
Default: KeepAliveTimeout 15
Context: server config
Status: Core
Compatibility: KeepAliveTimeout is only available in Apache 1.1 and later.
The number of seconds Apache will wait for a subsequent request before closing the connection. Once a request has been received, the timeout value specified by the Timeout directive applies.
--------------------------------------------------------------------------------
<Limit> directive
Syntax: <Limit method method ... > ... </Limit>
Context: any
Status: core
Access controls are normally effective for all access methods, and this is the usual desired behaviour. In the general case, access control directives should not be placed within a <limit> section.
The purpose of the <Limit> directive is to restrict the effect of the access controls to the nominated HTTP methods. For all other methods, the access restrictions that are enclosed in the <Limit> bracket will have no effect. The following example applies the access control only to the methods POST, PUT, and DELETE, leaving all other methods unprotected:
<Limit POST PUT DELETE>
require valid-user
</Limit>
The method names listed can be one or more of: GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK. The method name is case-sensitive. If GET is used it will also restrict HEAD requests.
--------------------------------------------------------------------------------
<LimitExcept> directive
Syntax: <LimitExcept method method ... > ... </LimitExcept>
Context: any
Status: core
Compatibility: Available in Apache 1.3.5 and later
<LimitExcept> and </LimitExcept> are used to enclose a group of access control directives which will then apply to any HTTP access method not listed in the arguments; i.e., it is the opposite of a <Limit> section and can be used to control both standard and nonstandard/unrecognized methods. See the documentation for <Limit> for more details.
如今网络技术如日中天,才见CGI(Common Gateway Interface)又出ASP(Active Serve Page),接着杀出PHP(见后注),真是令人手忙脚乱目不暇接。这些新软件的出现,不仅给我们带来了全新的感受,同时也给我等配置较低的机器如何玩这些软件带来了问题,本文就我自己的体会,阐述在较低机器配置下如何安装PHP4.0软件。
 
  本人的“爱鸡”配置是:联想天琴909的改造产品:MMX166换成K6Ⅱ-400,内存仍为32兆字节,主板核心电压跳到2.2V……    
  软件只需要Windows 98+PWS(Personal Web Server),NT、LINUX、Win 2000一律不用装。安装过程如下:    
  1、您可以从Windows 98(正式版或OEM版)的安装盘的add-onspwssetup.exe中安装PWS,选典型安装或定制安装,使用缺省安装目录C:Inetpubwwwroot(完成单机改造成服务器的宏伟工程)。
 
  2、软件下载:http://www.php.net/distributions/php-4.0.0-Win32.zip或http://soft.km169.net/soft/wybc/php-4.0.0-win32.zip!    
  3、用解压缩工具把php-4.0.0-Win32.zip解压到PHP安装目录,如C:php(可不要说你没有WinZip呀)!    
  4、将PHP安装目录下的php.ini-dist文件拷贝到C:WINDOWS目录,并将C:WINDOWSphp.ini-dist改名为C:WINDOWSphp.ini;    
  5、将PHP安装目录下的Msvcrt.dll和php4ts.dll拷贝到C:WINDOWSSystem目录,如果C:WINDOWSSystem目录下已经存在这些文件,请不要覆盖(事先查找一下有无Msvcrt.dll);    
  6、修改C:WINDOWSphp.ini:    
  1) 将Extension_dir设置为PHP安装目录,如:extension_dir =C:php(在php.ini中左看右看,即可找到);    
  2) 配置要加载的动态链接库(DLL),注意一定要保证只能加载PHP安装目录下存在的动态链接库,如有不同的动态链接库名称,请改成与该版本自带这些动态链接库:php_calendar.dll、php_imap.dll、php_ldap.dll相一致,因此动态链接库的配置栏如下(一定要将;去掉):    
  Windows Extensions    
  extension=php_calendar.dll    
  extension=php_imap.dll    
[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Redis连接池配置及初始化实现

    这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • mybatis的Configuration详解

    这篇文章主要介绍了mybatis的Configuration详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
  • 详解redis desktop manager安装及连接方式

    这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15
  • mybatis 返回Integer,Double,String等类型的数据操作

    这篇文章主要介绍了mybatis 返回Integer,Double,String等类型的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25
  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • js修改input的type属性问题探讨

    js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • Mysql常见问题集锦

    1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
  • 浅谈redis key值内存消耗以及性能影响

    这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
  • lua读取redis数据的null判断示例代码

    最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下...2020-06-30
  • SpringBoot集成Redis实现消息队列的方法

    这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • Mysql大小写敏感的问题

    一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
  • redis setIfAbsent和setnx的区别与使用说明

    这篇文章主要介绍了redis setIfAbsent和setnx的区别与使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-04
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • Redis的Expire与Setex区别说明

    这篇文章主要介绍了Redis的Expire与Setex区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
  • C#基础知识之this关键字介绍

    本文主要介绍this关键字的几种使用方法,this可以代表当前实例,可以调用其他构造函数,还可以用来构建索引器,这里都有一一举例说明。...2020-06-25