PDO预处理语句规避SQL注入攻击

 

  所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

第一种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$dsn  "mysql:dbname=study;host=localhost" ;
$pdo  new  PDO( $dsn , "root" , "root" );
 
//写一个预处理语句
$sql  "insert into class values(?,?)" ;
//将预处理语句扔到服务器等待执行,返回PDOStatement对象
$stm  $pdo ->prepare( $sql );
//第二次将变量(参数)扔到服务器的SQL语句相应位置,给预处理语句绑定参数
$stm ->bindParam(1, $Sclass );
$stm ->bindParam(2, $cla );
$Sclass   "7" ;
$cla  "七班" ;
//执行
$stm ->execute();

  

第一种方法简写

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$dsn  "mysql:dbname=study;host=localhost" ;
$pdo  new  PDO( $dsn , "root" , "root" );
 
//写一个预处理语句
$sql  "insert into class values(?,?)" ;
//将预处理语句扔到服务器等待执行,返回PDOStatement对象
$stm  $pdo ->prepare( $sql );
//定义索引数组
$arr  array ( "8" , "八班" );
//执行
$stm ->execute( $arr );

  

第二种方法

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$dsn  "mysql:dbname=study;host=localhost" ;
$pdo  new  PDO( $dsn , "root" , "root" );
//预处理语句
$sql  "insert into class VALUES (:Sclass,:cla)" ;
$stm  $pdo ->prepare( $sql );
 
//造一个数组
$arr  array ( "Sclass" => "10" , "cla" => "十班" );
 
//执行
$stm ->execute( $arr );

  

 

举例,第二种情况简单,建议应用第二种方法

1
2
3
4
5
6
7
8
<body xmlns= "http://www.w3.org/1999/html" >
<h1>添加数据</h1>
<form action= "pdoycl5.php"  method= "post" />
<div>代号:<input type= "text"  name= "Sclass" > </div>
<div>班级:<input type= "text"  name= "cla" > </div>
<input type= "submit"  value= "添加" >
</form>
</body>

  

1
2
3
4
5
6
7
8
<?php
$dsn  "mysql:dbname=study;host=localhost" ;
$pdo  new  PDO( $dsn , "root" , "root" );
//预处理语句
$sql  "insert into class VALUES (:Sclass,:cla)" ;
$stm  $pdo ->prepare( $sql );
//执行
$stm ->execute( $_POST );

 

转载于:https://www.cnblogs.com/benpaodegegen/p/6495209.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值