易受 SQL 注入攻击
Posted
技术标签:
【中文标题】易受 SQL 注入攻击【英文标题】:Vulnerable to SQL injections 【发布时间】:2019-08-10 16:57:54 【问题描述】:我正在做一个项目来寻找易受攻击的代码。这段代码 sn-p 是否容易受到 SQL 注入的攻击?
if(ISSET ($_POST['login']))
$username = $_POST['username'];
$password = $_POST['password'];
$query = $conn->query("SELECT * FROM `admin` WHERE `username` = '$username' && `password` = '$password'") or die(mysqli_error());
【问题讨论】:
是的。认识Bobby Tables。 这是什么编程语言? 它的 php。很抱歉应该提到这一点。 【参考方案1】:是的。最好使用Mysqli的参数化查询方式。
<?php
if (isset($_POST['user']) && isset ($_POST['pass']))
$user = mysql_real_escape_string ($_POST['user']),
$pass = mysql_real_escape_string ($_POST['pass']);
$conn = new mysqli("$db_host", "$db_user", "$db_pass", "$db");
$sql = "select * from admin where username=? and password=?";
$cmd = $conn->prepare($sql);
$cmd->bind_param("ss", $user, $pass);
$cmd->execute();
......
......
else
echo "Username and password cant not be null !";
?>
【讨论】:
您的答案中的错误:混合来自mysql
扩展和mysqli
扩展的函数。使用参数时,转义输入也是多余的。还以明文形式存储密码,尽管这是基于 OP 的帖子。无论如何,这段代码不是一个很好的例子。以上是关于易受 SQL 注入攻击的主要内容,如果未能解决你的问题,请参考以下文章