mysql中sql注入的随笔
当使用如下登录代码时:就会引发sql注入问题
怎么注入呢?
'or 1=1 #
就可以了。
为什么呢?
首先or:在sql中是或者,只要满足前一个或后一个条件即可,只要所以不论你是 'or 1=1 #还是 'or 2=2 #,都可以。
#: 是注释的意思,在sql中注释掉后面的密码判断。
所以这一段不用不用密码即可输入成功,
怎么办呢?
在php中,可以有很多方法。。。。就不举例了。
<!doctype html>
<html lang="ch">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="doAction.php" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="submit" />
</form>
</body>
</html>
<?php
header('content-type:text/html;charset=utf8');
$username = $_POST['username'];
$password = $_POST['password'];
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
$sql = "SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
$stmt = $pdo->query($sql);
echo $sql;
echo $stmt->rowCount();
} catch (PDOException $e) {
echo $e->getMessage();
}