sql注入中的代码

下列代码行构造字符串,与未经验证数据连接成SQL语句:
//php动态构造SQL字符串
$sql="select * from table where flield ='$_GET["input"]'";
///C#
String sql="select * from table where field='"+request.getParameter("input")+"'";
//Java
string sql="select * from table where field='"+request.getParameter("input")+"'";

下列代码动态的构造并执行SQL语句,语句包含未经验证的,有用户控制的数据:

//PHP中执行一条动态构造的SQL语句
mysql_query("select * from table where flield ='$_GET["input"]'");
//C#
sqlCommand command=new SqlCommand("select * from table where field='"+request.getParameter("input")+"'",connection);
//Java
ResultSet rs=s.executeQuery("select * from table where field='"+request.getParameter("input")+"'");
下列代码执行储存过程:
//在php中动态执行SQL存储过程
$result=mysql_query("select SP_StoredProcedure('$_GET["input"]')");
//C#
SqlCommand cmd=new SqlCommand("SP_StoredProcedure",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@input",request.getParameter("input")));
SqlDataReader rdr-cmd.ExecteReader();
//Java
CallableStatement cs=con.prepareCall("{call SP_StoredProcedure request.getParameter("input")}");
string output=cs.executeUpdate();

处理http请求和浏览器传递的所有信息

下面代码行说明如何在PHP中使用这些函数:

//$_GET ——一个存放通过GET方法传递变量的关联数组
$variable=$_GET['name'];
//$_POST——一个存放通过POST方法传递变量的关联数组
$variable=$_POST['name'];
//$_REQUEST——一个关联数组,包含$_GET,$_POST和$_COOKIE的内容
$variable=$_REQUEST['name'];
//$_COOKIE——一个关联数组,存放通过HTTP cookie传递的变量
$variable=$_COOKIE['name'];
//$_SERVER——服务器和执行环境的信息
$variable=$_SERVER['name'];

下列代码行说明如何在Jaca应用中使用这些函数:

//getParameter()——返回请求的给定参数的值
String string_variable=request.getParameter("name");
//getParameterValues()——以一个数组方式返回给定参数请求的所有值
String[] string_array=request.getParameterValues("name");
//getQueryString()——返回请求的查询字符串
String string_variable=request.getQueryString();
//getHeaders()——返回请求的头的值
string string_variable=request.getHeaders("User-Agent");
//getRequestedSessionId())——返回客户端指定的Session ID
String string_variable=request.getRequestedSessionId();
//getCookies()——返回一个cookie对象的数组
Cookie[] Cookie_array=request.getCookies();
//cookie.getValue()——返回请求的给定的cookie的值
String string_variable=Cookie_array.getValue("name");

下列代码说明如何在C#应用中使用这些函数:

//HttpCookieCollection——所有cookie的集合
HttpCookieCollection variable=Request.vookird;
//Form——所有表单值的集合
string variable=Request.Form["name"];
//Headers——所有头的集合
string variable=Request.Headers["name"];
//Params——所有查询字符串、表单、cookie和服务器变量的组合集
string variable=Request.Params["name"];
//QueryString——所有查询字符串项的集合
string variable=Request.QueryString["name"];
//ServerVariable——所有web服务器变量的集合
string variable=Request.ServerVariables["name"];
//Url——返回一个Url类型的对象,其Query属性包含了URI的信息
Uri object_variable=Request.Url;
string variable=object_variable.Query;
//UserAgent——包含浏览器的用户代理头
string variable=Request.UserAgent;
//UserHostAddress——包含客户端的远程IP地址
string variable=Request.UserHostAddress;
//UserHostName——包含客户端的远程主机名
string variable=Request.UserHostName;

各种编程语言均提供了大量不同的方法来构造并执行SQL语句,我们需要熟悉这些方法

下列代码说明如何在PHP应用中使用这些函数:

//mysql_query()——向当前使用的数据库发送一个查询
$result=mysql_query($sql);
//mysql_db_query()——选择一个数据库,在该数据库执行一个查询
$result=mysql_db_query($db,$sql);
//oci_parse()——在语句执行之前对其进行解析
$stmt=oci_parse($connection,$sql);
ociexecute($stmt);
//ora_parse()——在语句执行之前进行解析
if(!ora_parse($cursor,$sql)) {exit;}
else {ora_exec($cursor)}
//mssql_bind()——像储存过程添加一个参数
mssql_bind(&stmt,'@param',$variable,SQLVATCHAR,false,false,100);
$result=mssql_execute($stmt);
//odbc_preapre()——准备下一条执行语句
$stmt=odbc_preapre($db,$sql);
$result=mssql_execute($stmt);
//odbc_exec()——准备并执行一条SQL语句
$result-odbc_exec($db,$sql);
//pg_query()——执行一个查询(曾称为pg_exec)
$result=pg_query($conn,$sql);
//pg_send_query()——发送一个异步查询
pg_send_query($conn,$sql);
//pg_send_query_params——像服务器提交一个命令并分离参数,无需等待结果
pg_send_query_params($conn,$sql,$params);
//pg_query_params——向服务器提交一个命令并等待结果
pg_query_params($conn,$sql,$params);
//pg_send_prepare()——发送一份请求以创建一条具有指定参数的预备语句,无需等待完成(pg_preapre需要等待)
pg_send_prepare($conn,"my_query",'select * from table where field=$l');
pg_send_execute($conn,"my_query",$var);
//pg_select()——根据指定的具有field=>value的assoc_array选择记录
$result=pg_select($conn,$table_name,$assoc_array);
//pg_upgrade()——用数据更新于指定条件匹配的记录
pg_upgrade($conn,$arr_update,$arr_where);
//pg_insert()——将assoc_array的值插入道table_name指定的表中
pg_insert($conn,$table_name,$assoc_array);
//pg_delete()——根据assoc_array中指定的键和值删除表中的记录

下列代码说明了在Java应用中使用这些函数:

//creatStatement()——创建一个语句对象以便向数据库发送sql语句
statement=connection.createStatement();
//prepareStatement()——创建一条预编译的SQL语句并将其保存到对象中
PreparedStatement sql=con.prepareStatement(sql);
//executeQuery()——执行指定的SQL语句,从指定的表中获取数据
result=statement.executeQuery(sql);
//executeUpdate()——执行一条sql语句,该语句可能是一条条返回任何值的insert,update,delete语句
result=statement.executeUpdate(sql);
//execute()——执行指定的sql语句,从指定的表中获取数据
result=statement.execute(sql);
//addBatch()——将指定的sql命令添加到当前命令列表中
statement.addBath(sql);

下列代码说明了如何在C#中使用这些类:

//SqlCommand()——用于构造或发送sql语句或储存过程
SqlCommand command=new SqlCommand(sql,connection)
//SqlParameter()——用于向SqlCommand对象添加参数
SqlCommand command=new SqlCommand(sql,connection);
command.Parameters.Add("@param",SqlDbType.VarVhar,50).Value=input;
//OleDbCommand()——用于构造或发送SQL语句或储存过程
OleDbCommand command=new OleDbCommand(sql,connection);
//OleDbParamter()——用于向OleDbCommand对象添加参数
OleDbParamter command=new OleDbParamter(sql,connection)
command.parameters.Add("@param",OleDbType.VarChar,50).Value=input;
//OracleCommand()——用于构造发送sql语句或储存过程
//OracleParameter()——用于向OracleCommand对象添加参数
//OdbcCommand()——用于构造或发送sql语句
//OdbcParameter()——用于向OdbcCommand对象添加参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值