常见漏洞及处理方法

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值进行比较,如果两值相等则进行下一步操作,否则程序则中止运行

时间: 2024-10-16 00:46:32

常见漏洞及处理方法的相关文章

验证码的三个常见漏洞和修复方法

把验证码存储在Cookie中 一般来说,我们会把验证码的值用Session存储起来,通过对比用户提交的验证码和Session中的验证码,就可以知道输入是否正确.由于Session会占用服务器资源,我曾经想过是否可以把验证码的值加密后存储在Cookie中.不过事实证明,这只是异想天开罢了. 假设验证码的值是a,通过sha1加密后得到的值为b = sha1(a),并且把b存储在Cookie中.而用户提交的验证码值为c,通过判断sha1(c)是否与b相等,可以知道输入的验证码是否正确.然而,Cooki

详解Javaweb中常见漏洞的防御

上一篇给大家介绍了SpringMVC中常见的客户端数据输入点,这一篇给大家讲解下java中常见漏洞的防御方法. 0x01.sql注入 下面我们就用利用SpringMVC自带的数据库操作类jdbcTemplate举例.比如下面Dao中有如下的两个函数. 函数save使用的是绑定变量的形式很好的防止了sql注入,而queryForInt_函数接收id参数直接对sql语句进行了拼接,测试时出现sql注入. [java] view plain copy print? public static void

android WebView详解,常见漏洞详解和安全源码

这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView 的使用,下篇讲述 WebView 的漏洞和坑,以及修复源码的解析. 下篇:android WebView详解,常见漏洞详解和安全源码(下) 转载请注明出处:http://blog.csdn.net/self_study/article/details/54928371. 对技术感兴趣的同鞋加群 54

Windows XP与Windows 7系统常见漏洞

1.Windows XP系统常见漏洞 Windows XP系统常见的漏洞有UPNP服务漏洞.升级程序漏洞.帮助和支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.Windows Media Player漏洞.RDP漏洞.VM漏洞.热键漏洞.账号快速切换漏洞等. (1)UPNP服务漏洞 漏洞描述:允许攻击者执行任意指令. Windows XP默认启动的UPNP服务存在严重安全漏洞.UPNP(Universal Plug and Play)体系面向无线设备.PC和智能应用,提供普遍的对等网络连接,在家用信

Fckeditor常见漏洞的挖掘与利用整理汇总

查看编辑器版本 FCKeditor/_whatsnew.html ------------------------------------------------------------- 2. Version 2.2 版本 Apache+linux 环境下在上传文件后面加个.突破!测试通过. ------------------------------------------------------------- 3.Version <=2.4.2 For php 在处理PHP 上传的地方并未

android WebView详解,常见漏洞详解和安全源码(下)

上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http://blog.csdn.net/self_study/article/details/55046348 对技术感兴趣的同鞋加群 544645972 一起交流. WebView 常见漏洞 WebView 的漏洞也是不少,列举一些常见的漏洞,实时更新,如果有其他的常见漏洞,知会一下我-- WebView

Windows Server中的IIS漏洞以及修复方法

Windows Server中的IIS漏洞以及修复方法 我可以有把握地说,对于Windows服务器管理员来说普遍的目标是拥有适当弹性的系统.世界上有很多网络安全威胁,你最不希望发生的是在世界的另一头,或者在你的组织内部有人利用了IIS或者Windows的漏洞,而这一切都是本来可以避免的. 你可能无法触及应用层面的漏洞,但是在服务器层面你有很多事情可以做到使基于IIS的系统更加安全.通过回顾我多年的网站安全评估项目,可以指出以下最影响Windows服务器的IIS漏洞. 未处理异常(HTTP 500

用PHP语言做网站常见漏洞有哪些?

第一:SQL注入漏洞 在进行网站开发的时候,程序员由于对用户输人数据缺乏全面判断或者过滤不严导致服务器执行一些恶意信息,比如用户信息查询等.黑客可以根据恶意程序返回的结果获取相应的信息.这就是所谓的SQL注入漏洞. sql注入地步骤: a)  寻找注入点(如:登录界面.留言板等) b)  用户自己构造sql语句(如:’ or 1=1#,后面会讲解) c)  将sql语句发送给数据库管理系统(dbms) d)  dbms接收请求,并将该请求解释成机器代码指令,执行必要地存取操作 e)  dbms接

Android常见漏洞

Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏洞描述: 漏洞可导致中间人攻击 修改建议: 建议不要忽略ssl认证错误 漏洞名称: sql注入漏洞 漏洞描述: 漏洞可能导致用户数据库中的信息泄露或者篡改 修改建议: 建议使用安全sqlite,如sqlcipher 漏洞名称: https空校验漏洞 漏洞描述: 漏洞可导致中间人攻击 修改建议: se