常见漏洞及处理方法

1、sql注入

      什么是sql注入?就是用户输入特殊字符改变原有sql的语义,这就叫sql注入。

      我们看一下例子:

      首先建立一个简单的user表模拟一下sql注入,如图所示

      

     然后我们模拟一下用户登录:  

$username = $_POST['username'];
$passwd = $_POST['passwd'];
$sql = "select * from user where username='$username' and passwd='$passwd'";
$result = mysql_query($sql);
if($result){
    echo 'login success';
}else{
    echo 'login failed';
}
      如果用户输入的username=beggar和passwd=123456,此用户是可以登录的。

      思考一下,如果用户输入的数据为username=beggar和passwd=' or '1=1',此时的sql语句为select * from user where username='beggar' and passwd='' or '1=1';

      这样这个用户就可以在不知道密码的情况下登录成功。

      如何防止呢?

      在后台应当对用户输入的数据进行一定的过滤,我们也可以写一个方法进行处理接收到的数据,如:  

function add_slashes($name, $type){
    switch ($type){
        case 'integer' :
            if(is_array($name)){
                foreach ($name as $key=>$val){
                    $name[$key] = intval($val);
                }
            }else{
                if(isset($_POST[$name])){
                    $name = intval($_POST[$name]);
                }elseif(isset($_GET[$name])){
                    $name = intval($_GET[$name]);
                }
            }
        break;
        case 'string' :
            if(!get_magic_quotes_gpc()){
                if(is_array($name)){
                    foreach ($name as $key=>$val){
                        $name[$key] = addslashes($val);
                    }
                }elseif(isset($_GET[$name])){
                    if(isset($_POST[$name])){
                        $name = addslashes($_POST[$name]);
                    }else{
                        $name = addslashes($_GET[$name]);
                    }
                }
            }
        break;
    }
    return strip_tags($name);
}
2、XSS攻击

      后台接收到数据并显示出来:

$username = $_POST['username'];
$passwd = $_POST['passwd'];
echo 'user info :<br/>';
echo 'username:' . $username . '<br/>';
echo 'passwd:' . $passwd . '<br/>';
       当用户输入的username为<script>alert("you are a bitch! haha...")</script> (开个玩笑)

       在展示的页面中则会弹出you are a bitch! haha...

       如何防止呢?

       使用PHP自带的strip_tags函数、htmlspecialchars、htmlentities这三个函数都可以对html进行过滤,第一个函数会去除所有html标签,第二个和三个函数则会html标签进行转义

3、csrf攻击

      常用方法是在隐藏表单中加入token法,token是个随机数,在提交表单时候会把token传过去,后台接收到token后则和后台session中的token值进行比较,如果两值相等则进行下一步操作,否则程序则中止运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值