怎么检测网站存在注入漏洞 防注入有哪些解决办法

发布网友

我来回答

4个回答

懂视网

与技术沟通未果的情况下,网上查了点资料,对其文件进行修复,如下修改:

1,/admin/shopinfo.php修复方法

(大概在第53、71、105、123行,4个地方修复方式都一样)     admin_priv(‘shopinfo_manage‘);      修改为     admin_priv(‘shopinfo_manage‘); $_REQUEST[‘id‘] =intval($_REQUEST[‘id‘]); 

2,/admin/shophelp.php修复方法

(大概在第81、105、133、155行,4个地方修复方式都一样)     admin_priv(‘shophelp_manage‘);      修改为     admin_priv(‘shophelp_manage‘); $_POST[‘id‘] =intval($_POST[‘id‘]);


3,/api/client/includes/lib_api.php漏洞修复方法

复制代码

 

functionAPI_UserLogin($post)

{

    /*添加 SQL注入过滤 */

    if (get_magic_quotes_gpc())

    {    

        $post[‘UserId‘] = $post[‘UserId‘]    

    }

    else

    {    

        $post[‘UserId‘] =addslashes($post[‘UserId‘]);    

    }

    /* */

    $post[‘username‘] = isset($post[‘UserId‘])? trim($post[‘UserId‘]) : ‘‘;

    …….

 

4,adminedit_languages.php漏洞修复方法

 

// 修复前

$dst_items[$i]= $_POST[‘item_id‘][$i] .‘ = ‘. ‘"‘ .$_POST[‘item_content‘][$i].‘";‘; 

// 修复后,由于想在单引号之间出现单引号,必须使用转义。

$dst_items[$i]= $_POST[‘item_id‘][$i] .‘ = ‘. ‘‘‘ .$_POST[‘item_content‘][$i]. ‘‘;‘;

 

修复后,测试一下,是否还有漏洞。

 

 

5,/admin/affiliate_ck.php sql注入漏洞修复

get_affiliate_ck函数.

function get_affiliate_ck()226行

修复方案

对$_GET[‘auid’]强制转换

    if (isset($_GET[‘auid‘]))

    {

        $sqladd = ‘ AND a.user_id=‘ . intval($_GET[‘auid‘]);

    }

 

6,/admin/comment_manage.php注入漏洞修复  336行

文件在/admin/comment_manage.php后台sql注入漏洞。  

  /admin/comment_manage.php修复方法(大概在第336行)    

$filter[‘sort_by‘]      =empty($_REQUEST[‘sort_by‘]) ? ‘add_time‘ : trim($_REQUEST[‘sort_by‘]);

$filter[‘sort_order‘]   = empty($_REQUEST[‘sort_order‘]) ? ‘DESC‘ :trim($_REQUEST[‘sort_order‘]);

 

     修改为  

$sort =array(‘comment_id‘,‘comment_rank‘,‘add_time‘,‘id_value‘,‘status‘);

$filter[‘sort_by‘] = in_array($_REQUEST[‘sort_by‘], $sort) ?trim($_REQUEST[‘sort_by‘]) : ‘add_time‘;

$filter[‘sort_order‘] = empty($_REQUEST[‘sort_order‘])? ‘DESC‘ : ‘ASC‘;

 

7,/includes/modules/payment/alipay.phpSQL注入漏洞 116行

防御方法

 

/includes/modules/payment/alipay.php

 

functionrespond()

{

    if (!empty($_POST))

    {

       foreach($_POST as $key => $data)

       {

       $_GET[$key] = $data;

       }

    }

    $payment = get_payment($_GET[‘code‘]);

    $seller_email =rawurldecode($_GET[‘seller_email‘]);

    $order_sn = str_replace($_GET[‘subject‘],‘‘, $_GET[‘out_trade_no‘]);

   /* 对$order_sn进行有效过滤 */

    $order_sn = trim(addslashes($order_sn));

    /* */

    ..

 

 

8,/includes/lib_insert.phpsql注入漏洞修复

ecshop的/includes/lib_insert.php文件中,对输入参数未进行正确类型转义,导致整型注入的发生。

技术分享

  1. 139c139,140  

  2. +       $arr[‘num‘] = intval($arr[‘num‘]);  

  3. +                       $arr[‘id‘] = intval($arr[‘id‘]);  

  4. 267c268  

  5. ---  

  6. 270c271,272  

  7. +       $arr[‘id‘] = intval($arr[‘id‘]);  

  8. +                       $arr[‘type‘] = addslashes($arr[‘type‘]);  

  9. 308c310  

  10. ---  

  11. +       $arr[‘id‘] = intval($arr[‘id‘]);  


修改后更新阿里云控制台,提示已经修复,大功告成


本文出自 “云之上” 博客,请务必保留此出处http://weimouren.blog.51cto.com/7299347/1908368

关于ECSHOP中sql注入漏洞修复

标签:ecshop sql注入漏洞修复

热心网友

许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。

第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用来防止别人进行手动注入测试。

可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。

第二步:对于注入分析器的防范,通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。

第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。

对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。

对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。

把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。

我们通过上面的三步完成了对数据库的修改。

另外要明白您做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。只要在管理员登录的页面文件中写入字符*就行了,就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受*。

希望可以帮到你,谢谢!

热心网友

关于如何防止sql注入攻击,我们从以下几点开始入手:
1、首先我们可以了解到sql注入攻击都是通过拼接的方式,把一些恶意的参数拼接到一起,然后在网站的前端中插入,并执行到服务器后端到数据库中去,通常我们在写PHP网站代码的时候会将get ID这个参数值获取到后直接拼接到后端服务器中去,查询数据库,但是如果拼接了一些恶意的非法参数,那么久可以当做sql语句来执行,如果防止sql注入呢?
2、为了防止网站被sql注入攻击,我们应该从一开始写代码的时候就应该过滤一些sql注入的非法参数,将查询的一些sql语句,以及用户输入的参数值都以字符串的方式来处理,不论用户输入的什么东西,在sql查询的时候只是一段字符串,这样构造的任何恶意参数都会以字符串的方式去查询数据库,一直恶意的sql注入攻击就不会被执行,sql注入语句也就没有效果了,再一个就是网站里的任何一个可以写入的地方尽可能的严格过滤与*,漏下一个可以输入的地方网站就会被攻击,网站就会被黑,所有做的网站安全就会没有效果,包括一些get,post,cookie方式的提交都是不可信的,像数据表里referer user-agent等字段都是可以伪造,写入sql注入语句的,像前端时间爆发的ecshop漏洞利用的就是user.php,伪造referer参数进行了sql注入,执行了远程代码。

3、再一个防止sql注入的方法就是开启PHP的魔术配置,开启安全配置模式,将safe_mode开启on.以及关闭全局变量模式,register_globals参数设置为on,magic_quotes_gpc参数开启。

热心网友

打开腾讯智慧安全页面
然后在里面找到御点终端安全系统
接着选择上方产品选项,在里面选择腾讯御点,修复漏洞

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com