php通用防注入与注入详细说明

还有服务器和mysql教程也要加强一些安全防范。
对于linux服务器的安全设置:
加密口令,使用“/usr/sbin/authconfig”工具打开密码的shadow功能,对password进行加密。
禁止访问重要文件,进入linux命令界面,在提示符下输入:
#chmod 600 /etc/inetd.conf    //改变文件属性为600
#chattr +i  /etc/inetd.conf     //保证文件属主为root
#chattr –i  /etc/inetd.conf     // 对该文件的改变做限制  
禁止任何用户通过su命令改变为root用户
在su配置文件即/etc/pam.d/目录下的开头添加下面两行:
auth  sufficient  /lib/security/pam_rootok.so debug
auth  required  /lib/security/pam_whell.so group=wheel
删除所有的特殊帐户
#userdel  lp等等    删除用户
#groupdel lp等等    删除组
禁止不使用的suid/sgid程序
#find / -type f (-perm -04000  - o –perm -02000 ) -execls –lg {} ;

 代码如下 复制代码
$arrfiltrate=array("'",";","union","select","insert","update","delete","load_file","outfile");

 //出错后要跳转的url

 代码如下 复制代码

$strgourl="";  

function funstringexist($strfiltrate,$arrfiltrate)
{
  foreach ($arrfiltrate as $key=>$value)
  {
    if (eregi($value,$strfiltrate))
    {
      return true;
    }
  }
  return false;
}

//合并$_post 、 $_get和$_cookie

 代码如下 复制代码
if(function_exists(array_merge))   
{
  $arrpostgetcookiesession=array_merge($http_post_vars,$http_get_vars,$http_cookie_vars); 
  $string = implode("",$arrpostgetcookiesession);
}

//验证

 代码如下 复制代码
if(funstringexist($string,$arrfiltrate))
{
  echo "<script language="网页特效">alert("提示,非法字符");</script>";
}
else
{
  echo "<script language="javascript">window.location="".$strgourl."";</script>";
}

第二款防注入实例

 代码如下 复制代码

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 "alert(/"neeao提示,非法字符/");";
if (empty($strgourl)){
echo "history.go(-1);";
}else{
echo "window.location=/"".$strgourl."/";";
}
exit;
}
}

看一下关于注入细节

转化成ascii后是char(97,108,112,104,97)
转化成16进制是0x616c706861
(我们将在光盘中提供16进制和ascii转换工具)
好了直接在浏览器里输入:

 代码如下 复制代码
http://localhost/site/admin/login.php?
username=char(97,108,112,104,97)%23

sql语句变成:

 代码如下 复制代码

select * from alphaaut

hor where username=char(97,108,112,104,97)# and password=

如图21

  正如我们期望的那样,他顺利执行了,我们得到我们想要的。
  当然咯,我们也可以这样构造

 代码如下 复制代码
http://www.111cn.net/site/admin/login.php?username=0x616c706861%23

sql语句变成:

 代码如下 复制代码
select * from alphaauthor where username
=0x616c706861%23# and password=

我们再一次是成功者了。很有成就感吧,

或许你会问我们是否可以把#也放在char()里
实际上char(97,108,112,104,97)相当于 alpha
注意是alpha上加引号,表示alpha字符串。
我们知道在mysql中如果执行

 代码如下 复制代码
mysql> select * from dl_users where username=alpha;
error 1054 (42s22): unknown column alpha in where clause

看返回错误了。因为他会认为alpha是一个变量。所以我们得在alpha上加引号。
如下

 代码如下 复制代码
mysql> select * from dl_users where username= alpha ;

 

时间: 2024-08-02 14:19:11

php通用防注入与注入详细说明的相关文章

ASP通用防注入代码.杜绝SQL注入隐患.提升网站安全

ASP通用防注入代码.杜绝SQL注入隐患.提升网站安全 <% '''''''''''''''''''''''''''''''''''''''''''''''' 'ASP通用防注入代码 '您可以把该代码COPY到头文件中.也可以单独作 '为一个文件存在,每次调用使用 '作者:y3gu - 2005-7-29 '''''''''''''''''''''''''''''''''''''''''''''''' Dim GetFlag Rem(提交方式) Dim ErrorSql Rem(非法字符) Di

MSSQL通用防注入程序的漏洞

现在基于web的攻击一般都是注入.导致注入的原因一般为对变量的过滤不完全,从而可以使入侵者非法执行程序或查询修改任意数据.随着注入攻击的愈演愈烈,一些专门的过滤代码应运而生.但一些过滤代码的不完善很可能导致新的攻击.下面就以目前应用最广泛的过滤代码--SQL通用防注入程序为下列说明漏洞的成因.利用方法及防范措施. SQL通用防注入程序是由火狐的枫知秋编写的,功能相当完善的防注入代码.它能对定义的过滤字符实现get提交的过滤,并能记录攻击者的IP提交的数据信息.使用时只须在要防注入的文件头中加入代

通过cookies注入破解ASP通用防注入程序

在一次网站被注入木马后,很是郁闷,网站已经放入了通用的ASP防注入程序,但依然被注入. 在查阅了大量的资料后,终于发现了问题所在. 现在很多网站都加了防注入系统代码,你输入注入语句将无法注入~~感觉这样的防注入系统不错,但防注入系统没有注意到 Cookies 的问题!所以就有了Cookies注入~~ 我们来研究一下怎样情况下才会有Cookies注入!如果你学过ASP你应该会知道 Request.QueryString (GET) 或 Request.Form (POST)!呵,没错,这就是我们用

PHP通用防注入安全代码

安全|防注入 简述:/************************* 说明: 判断传递的变量中是否含有非法字符 如$_POST.$_GET 功能: 防注入 **************************/ <?php //要过滤的非法字符 $ArrFiltrate=array("'",";","union"); //出错后要跳转的url,不填则默认前一页 $StrGoUrl=""; //是否存在数组中的值 fu

在Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)_实用技巧

首先,创建一个SQLInjectionHelper类完成恶意代码的检查 代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text.RegularExpressions; /// <summary> ///SQLInjectionHelper 的摘要说明 /// </summary> public cla

sql通用防注入系统

//防注入  代码如下 复制代码 $arrfiltrate=array("update","delete","selert","drop","exec","cast","'","union"); //出错后要跳转的url,不填则默认前一页 $strgourl=""; //是否存在数组中的值 function funstringe

php通用防注入程序 推荐_php技巧

复制代码 代码如下: function jk1986_checksql() { $bad_str = "and|select|update|'|delete|insert|*"; $bad_Array = explode("|",$bad_str); /** 过滤Get参数 **/ foreach ($bad_Array as $bad_a) { foreach ($_GET as $g) { if (substr_count(strtolower($g),$bad

asp下的风讯用的SQL通用防注入模块提供了_应用技巧

复制代码 代码如下: <% Dim FS_NoSqlHack_AllStr,FS_NoSqlHack_Str,FS_NoSqlHack_ComeUrlGet,FS_NoSqlHack_ComeUrlPost,FS_NoSqlHack_Get,FS_NoSqlHack_Post,FS_NoSqlHack_i 'On Error Resume Next FS_NoSqlHack_AllStr="'|;| and |chr(|exec |insert |select |delete from|u

asp下的风讯用的SQL通用防注入模块提供了

复制代码 代码如下: <% Dim FS_NoSqlHack_AllStr,FS_NoSqlHack_Str,FS_NoSqlHack_ComeUrlGet,FS_NoSqlHack_ComeUrlPost,FS_NoSqlHack_Get,FS_NoSqlHack_Post,FS_NoSqlHack_i 'On Error Resume Next FS_NoSqlHack_AllStr="'|;| and |chr(|exec |insert |select |delete from|u