• web服务端安全之SQL注入攻击


    一、SQL注入攻击的原理
    攻击者在HTTP请求中,注入恶意的SQL代码,并在服务端执行。
    比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现

    select * from user where name = 'camille' and password = '' or '1'='1'

    不管用户名和密码是什么,查询出来的用户列表都不为空,这样可以随意看其他用户的信息。

    二、SQL注入攻击的出现场景

    1、url参数提交
    2、表单提交
    3、cookie参数提交
    4、http请求头部可修改的值比如referer,userAgent

    三、SQL注入攻击的防御

    1、客户端

    • 限制字符串输入的长度;
    • 有效性检验。
    //过滤URL非法SQL字符,或者过滤文本框非法字符。
    var sUrl = location.search.toLowerCase();
    var sQuery = sUrl.substring(sUrl.indexOf("=")+1);
    reg=/select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
    if(reg.test(sQuery))
    {
        alert("请勿输入非法字符");
        location.href = sUrl.replace(sQuery,"");
    }

    2、服务端

    • 使用预编译语句,绑定变量;
    • 严格检查用户数据,有效性检验,防止攻击者绕过客户端请求;
    • 永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取;
    • 过滤SQL需要的参数中的特殊字符,比如单引号、双引号。
  • 相关阅读:
    华为手机wifi调试adb,断开数据线offlin
    appium 识别抖音视频已经播放完成
    对于学习新知识的一点自我反思
    部分软件激活
    AndroidStudio 创建简单的app
    App 逆向思路
    链家
    pyqt5 截屏
    3.无重复字符的最长子串
    1.两数之和
  • 原文地址:https://www.cnblogs.com/camille666/p/web_safe_sql.html
Copyright © 2020-2023  润新知