PHP的sql注入处理(pdo)

sqlmap使用教程

https://www.freebuf.com/sectool/164608.html 

https://blog.csdn.net/guiziwen/article/details/78770285

/**
 * @1,sql注入漏洞:
 * 比如:在用户名输入框中输入:’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
 *      select * from users where username='' or 1=1#' and password=md5('')
 * @2,XSS漏洞:全称跨站脚本攻击,一般是<script></script>攻击
 */

$text = $_POST['test'];

// 1,方法一
$text = str_replace("<","&lt;",$text);
$text = str_replace(">","&gt;",$text);

// 2,方法二
$text = htmlspecialchars($text);

 

 1,PHP   pdo的   :content  占位 

<?php
/**
 * @sql注入
 * sqlmap
 * sql手工注入
 */
function conn()
{
    $db = new PDO("mysql:host=localhost;dbname=dm", "root", "");
    $db->exec("set names utf8");
    return $db;
}

$db = conn();
// :content占位
$sql = "insert into love(content,created_at) values (:content,:created_at)";
$stmt = $db->prepare($sql); // 预处理
$stmt->bindParam(":content",$content);//绑定
$count = $stmt->execute();

 2,PHP   pdo的 ?占位

<?php
$db = new PDO("mysql:host=localhost;dbname=dm", "root", "");
$sql = "insert into comment(love_id,content,created_at) values (?,?,now())";
// 预处理
$stmt = $stmt = $db->prepare($sql);
// 如果使用?占位
$stmt->bindParam(1, $love_id);
$stmt->bindParam(2, $content);

$stmt->execute();

// TODO 获取插入的记录的id
echo $db->lastInsertId();
header("Location:content.php?id=" . $love_id);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值