一、环境搭建
windows环境下载安装全功能phpstudy
假如有启动失败的情况,按下面方法能针对性解决问题:
linux环境下安装phpstudy
二、核心配置
下面这幅图代代表的那些指令可以配置的范围,也就是在哪可以配置
register_globals(全局变量注册开关)
因此,当PHP版本低于5.4.0的时候,又开启了register_globals=on,那么就可以通过get或者post请求来控制那些未进行安全过滤的变量。从而实现身份验证漏洞,XSS漏洞等还有一些我未知的漏洞。
下面举三个例子:
实例一
register_globals=on,会导致上面的身份认证被绕过。代码逻辑是先判断用户身份是否合法,合法就没问题,但是,假如不合法,那么$authorized应该是null,而此时要是开启了register_globals=on,那么攻击者利用get或者post请求,就可以给$authorized赋值。假如赋值为1,那么就为true,就会加载攻击者没有身份加载的data.php
实例二:
同理,username在register_globals=on的情况下,也可以被攻击者赋值利用。比如此时username假如是一个xss语句,那么就会存在xss攻击。$_SESSION的功能是用来存储和取回相应的键值。
案例三:
这个案例用来探测有害变量,是给开发者使用的,开发者通过开启register_globals=on,就可以接收到前台发送过来的get,post请求,然后发邮件给管理员,有人在前台输入有害变量。补充:$_COOKIE是获取客户端相应的cookie键值,而$_SERVER['REMOTE_ADDR']是服务器IP,mail()是发送邮件函数。
allow_url_include(是否允许包含远程文件)
包含远程执行文件是直接就可以运行相关的程序。也就是说在PHP5.2.0版本之前,这个都是开启的。如果开发者没做好设置,将其关闭,那么网站就非常危险了。至于allow_url_fopen只是是否打开文件。或许这个选项会和钓鱼页面扯上关系。
magic_quotes_gpc(魔术引号自动过滤)
只要开启了magic_quotes_gpc,那么就会自动在get,post,cookie请求中,将单引号,双引号,反斜杠\,空字符null前面加上反斜杠\
magic_quotes_runtime(魔术引号自动过滤)
将攻击代码先写入数据库,读取时候触发攻击,这种攻击方式听说过,但是却从来没有实践过。
只有部分函数受到这个配置的影响,那也就是说,只要绕过这些部分函数,那么用那些绕过的函数去取数据库中或者文件中的信息,这个过滤配置就失效了!就可能产生相应的漏洞,甚至可以利用。
magic_quotes_sybase(魔术引号自动过滤)
这个设置一旦打开,就会覆盖掉magic_quotes_gpc=on这条指令。这条设置的处理对象和magic_quotes_gpc一样,都是get,post,cookie请求的处理。但是,处理方式确是仅仅转义了null字符,和将单引号变成两个单引号。这条指令的配置范围是PHP_INI_ALL,在PHP5.4.0中移除了这个配置。
safe_mode(安全模式)
这种模式只存在于PHP5.4之前,配置范围PHP_INI_SYSTEM,当开启safe_mode=on,那么联动可以配置的指令就有:
safe_mode_include_dir
safe_mode_exec_dir
safe_mode_allowed_env_vars
safe_mode_protected_env_vars
说的通俗一点,就是同一用户只能执行自己文件夹下的文件操作,若要执行其他用户的文件操作,必须使用safe_mode联动的其他函数。
open_basedir PHP 可访问目录
open_basedir=/www/ 用来限制PHP可以访问的目录,通常只设置web文件目录。但是有时候需要引用web目录之外的脚本,那么也要将脚本目录加进来。另外,openbasedir=/www/a,这样设置后,PHP也可以访问/www/b路径,若想要定死路径,那么就是openbasedir=/www/a/
disable_functions(禁用函数)
至于自定义的PHP扩展能实现什么功能,我就不知道了。
display_errors和error_reporting错误回显
就是开发过程中,为了更好的调试程序,会显示报错信息。当网站上线后,建议就关闭这个报错设置。否则会给攻击者了解网站代码的机会。
网友评论