zoukankan      html  css  js  c++  java
  • 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需要的参数中的特殊字符,比如单引号、双引号。
  • 相关阅读:
    白话SSL协议的握手过程
    PHP进程高负载
    Apache不定时宕机
    KindEditor
    过滤进程命令
    LAMP 平台必建安装包
    scp command
    ssl_request_log日志拆分
    Day01:Python入门
    Day03:集合、文件处理和函数基础
  • 原文地址:https://www.cnblogs.com/camille666/p/web_safe_sql.html
Copyright © 2011-2022 走看看