网站防注入与挂马 PHP.INI 安全设置
当要在防止页面攻击时,可在页面的头部include防攻击文件,就像通用防注入文件。我们可以用三种情况来办到:
1、在每个文件内引用。这样的文件是可以,不过如果一个网站内有几百个文件的话就不方便了。
2、在共同包含文件内引用一下,比如 config.inc.php教程。这是一个好办法,也是目前市场上比较流行的做法。
3、在php.ini中引用。在配置文件内引用的话,将影响到所有的网站,包含所有页面,这就像当年流行的一些免费空间商,当你免费开通一个ftp空间,上传网站以后,空间内会出现广告一样。不知道是不是这种方法,但是目的是一样的。这样做的好处是:如果是一个公司或者是一个企业内部网站的话,即安全,维护也方便。
前两种方法大家都清楚,第三种就是在php.ini中,找到此节:
;automatically add files before or after any php document.
;auto_prepend_file = "phpids.php"
;auto_append_file = "alert.php"
默认是空,请添加所包含的文件。
同时找到:
;unix: "/path1:/path2"
;include_path = ".:/php/includes"
;
;windows: "path1;path2"
include_path = ".;f:phpnowhtdocs"
因为我的是win环境,所以开启了windows选项,包含路径可自由修改。同时,这样的功能也为我们攻击也造成了方便,比如挂马。现在“市场”上也有很多的挂马技巧,就不多说了。我们可以利用auto_prepend_file选项,来批量挂马了,可以将整个服务器上的网站挂上,优点为:不影响速度、不修改文件、方法新颖。 缺点为:必须对php.ini有写权限。
<?php教程
/*************************
说明:
判断传递的变量中是否含有非法字符
如$_post、$_get
功能:
防注入
**************************/
//要过滤的非法字符 这个过滤的字符 还可以增加
$arrfiltrate=array("'",";","union");
//出错后要跳转的url,不填则默认前一页
$strgourl="";
//是否存在数组中的值
function funstringexist($strfiltrate,$arrfiltrate){
foreach ($arrfiltrate as $key=>$value){
if (eregi($value,$strfiltrate)){
return true;
}
}
return false;
}//合并$_post 和 $_get
if(function_exists(array_merge)){
$arrpostandget=array_merge($http_post_vars,$http_get_vars);
}else{
foreach($http_post_vars as $key=>$value){
$arrpostandget[]=$value;
}
foreach($http_get_vars as $key=>$value){
$arrpostandget[]=$value;
}
}//验证开始
foreach($arrpostandget as $key=>$value){
if (funstringexist($value,$arrfiltrate)){
echo "<script language="网页特效">alert("非法字符");</script>";
if (empty($strgourl)){
echo "<script language="javascript">history.go(-1);</script>";
}else{
echo "<script language="javascript">window.location="".$strgourl."";</script>";
}
exit;
}
}
?>
(1) 打开php教程的安全模式
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
但是默认的php.ini是没有打开安全模式的,我们把它打开:
safe_mode = on
(2) 用户组安全
当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同
组的用户也能够对文件进行访问。
建议设置为:
safe_mode_gid = off
如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要
对文件进行操作的时候。
(3) 安全模式下执行程序主目录
如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:
safe_mode_exec_dir = d:/usr/bin
一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,
然后把需要执行的程序拷贝过去,比如:
safe_mode_exec_dir = d:/tmp/cmd
但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录:
safe_mode_exec_dir = d:/usr/www
//把一些预定义的字符转换为 HTML 实体 以及在预定义字符前加上反斜杠,包括 单引号、双引号、反斜杠、NULL,以保护数据库安全
function d_htmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = d_htmlspecialchars($val);
}
} else {
$string = str_replace('&', '&', $string);
$string = str_replace('"', '"', $string);
$string = str_replace(''', ''', $string);
$string = str_replace('<', '<', $string);
$string = str_replace('>', '>', $string);
$string = preg_replace('/&(#d;)/', '&1', $string);
}
return $string;
}
//
function d_addslashes($string, $force = 0) {我们提供了三个函数不来过滤一些特殊的字符,主要是利用php把sql敏感字符串给过滤掉了,好了下面来看看这款代码吧。有需要的朋友拿去看看。
if(!$globals['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) $string[$key] = d_addslashes($val, $force);
}
else $string = addslashes($string);
}
return $string;
}
function phps教程ql_show($str){
$str = stripslashes($str);
$str = str_replace("\", "", $str);
$str = str_replace("/", "/", $str);
$str = str_replace(" ", " ", $str);
$str = str_replace(",", ",", $str);
return $str;
}
function phpsql_post($str){
$str = stripslashes($str);
$str = str_replace("|", "|", $str);
$str = str_replace("<", "<", $str);
$str = str_replace(">", ">", $str);
$str = str_replace(" ", " ", $str);
$str = str_replace(" ", " ", $str);
$str = str_replace("(", "(", $str);
$str = str_replace(")", ")", $str);
$str = str_replace("`", "`", $str);
//$str = str_replace("'", "'", $str);
$str = str_replace('"', """, $str);
$str = str_replace(",", ",", $str);
$str = str_replace("$", "$", $str);
$str = str_replace("", "\", $str);
$str = str_replace("/", "/", $str);
return $str;
}
function phpsql_replace($str){
$str = stripslashes($str);
$str = str_replace("'", "'", $str);
return $str;
}
相关文章
- 最近公司的网站升级Windows 2016服务器,选择安装了最新版的Windows 2016,以前使用Windows服务器还是Windows 2003系统,发现变化还是挺多的,依次记录下来以备后面查阅...2020-10-05
- 方法一过滤html自定义函数 代码如下 复制代码 function ihtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key =>...2016-11-25
- 设置php教程.ini 脚本超时方法 设置有二种 方法一,在php.ini里面设置 max_execution_time = 1800 ; 当前上面方法可以利用ini_set("选项","值"), ini_set(''max_e...2016-11-25
- [Zend] ; zend optimizer & zend debugger 冲突,不能同时共存 ;;;;;;;;;;;;;;; zend optimizer ;;;;;;;;;;;;;;;;; ;zend_extension_manager.optimizer_ts="...2016-11-25
win2003 服务器安全设置教程(权限+防火墙)第1/3页
win2003 服务器安全设置教程(权限+防火墙) ...2016-01-27- 我们只要在php教程.ini增加 disable_functions =phpinfo php.ini里引入了一项功能disable_functions , 这个功能比较有用,可以用它禁止一些函数。比如在php.ini里加上...2016-11-25
- 下面一款防止php页面给sql注入的一个程序代码,有需要的朋友可参考。 以下代码实现过滤php的$_GET 和$_POST参数 代码如下 复制代码 /** *...2016-11-25
- 安全配置和分析概述“安全配置和分析”是分析和配置本地系统安全性的一个工具。...2016-01-27
- php.ini 配置心得,一般需要修改的地方,要不无法上传大文件等。...2016-01-27
- 众所周知,在windows下当Apache第 一次被安装为服务后,它会以用户“System”(本地系统账号)运行。...2016-01-27
- ;;;;;;;;;;;;;;;;; ; Data Handling ; ;;;;;;;;;;;;;;;;; variables_order = "EGPCS" ; 这条指示描述了PHP 记录 ; GET, POST, Cooki...2016-11-25
- 当要在防止页面攻击时,可在页面的头部include防攻击文件,就像通用防注入文件。我们可以用三种情况来办到: 1、在每个文件内引用。这样的文件是可以,不过如果一个网站内有...2016-11-25
php中php.ini-dist和php.ini-recommended文件区别
在php解压包文件中我们地发现有两个php.ini文件,php.ini-dist和php.ini-recommended了,那么这两个文件使用 是什么呢,下面我来给大家简单介绍 在Windows下安装PHP,通...2016-11-25windows server 2008 服务器安全设置初级配置
这里为大家分享的是windows server 2008 服务器安全设置初级配置,基本上最基本上的东西都包括了,需要的朋友可以参考下...2017-07-06- ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; include_path = ; include 路径设置,UNIX: "/path1:/path2" Windows: "p...2016-11-25
- 临时修改php.ini文件ini_set("项目","值");ini_set("output_buffering","0"); ob_start(); 在本系列文章中,我们将全面探讨如何在PHP开发...2016-11-25
- 这段程序代码是一款php $_POST、$_GET防注入程序哦,以前我们也写过很多sql防注入程序,下面来看看这款防注入的php代码吧。 <? /************************* 说明:...2016-11-25
- 适用于 php-5.2 的 php.ini 中文版 ;;;;;;;;;;;;;; ;; 简介 ;; ;;;;;;;;;;;;;; ; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众多资料以后,结合自...2016-11-25
- 在php中防注入一般会写一个全局文件用来过滤特殊的字符串,本文章来总结了各种各样的php防注入函数代码,同时还可防sql注入大家可参考。 为了安全,我们常用到下面的函...2016-11-25
- <?php教程 /************************* 说明: 判断传递的变量中是否含有非法字符 如$_post、$_get 功能: 防注入 **************************/ //要过...2016-11-25