Php 我的MySQL数据库被删除了,我认为这是SQL注入,我错在哪里?
所以我有一个测试数据库是实时的,我去度假回来,我的MYSQL数据库被删除了数据(只有大约8行)。这都是测试数据,所以我不担心,我的想法是,我是通过PHP注册表单注入SQL的,但我在这里没有看到任何漏洞 我在SQL查询中使用变量,我认为这可以防止这种类型的攻击 我不知道漏洞在哪里。我只有5个文件,这是一个我认为是问题所在的文件,它从以前的表单接收数据Php 我的MySQL数据库被删除了,我认为这是SQL注入,我错在哪里?,php,mysql,Php,Mysql,所以我有一个测试数据库是实时的,我去度假回来,我的MYSQL数据库被删除了数据(只有大约8行)。这都是测试数据,所以我不担心,我的想法是,我是通过PHP注册表单注入SQL的,但我在这里没有看到任何漏洞 我在SQL查询中使用变量,我认为这可以防止这种类型的攻击 我不知道漏洞在哪里。我只有5个文件,这是一个我认为是问题所在的文件,它从以前的表单接收数据 <html> <head> <meta http-equiv="Content-Type" content="text
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Challenge Me</title>
</head>
<body bgcolor="black" style="color:white;">
<?php
if($_GET["dispname"] && $_GET["regemail"] && $_GET["regpass"] && $_GET["regpass2"] )
{
if($_GET["regpass"]==$_GET["regpass2"])
{
$regemail = $_GET["regemail"] ;
$servername="localhost";
$username="***";
$password="***";
$database="***";
$conn= mysql_connect($servername,$username,$password)or die(mysql_error());
mysql_select_db("$database",$conn);
$query = 'SELECT email FROM users WHERE email = "' . $regemail . '"';
$result = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result) ) {
die("Duplicate email found! Please press the back button to use another email or " . "<a href='forgotpassword.php'>CLICK HERE</a> to have your password emailed");
}
else {}
$sql="insert into users (fullname, displayname,email,password)values('$_GET[fullname]','$_GET[dispname]','$_GET[regemail]','$_GET[regpass]')";
$result=mysql_query($sql,$conn) or $string = mysql_error();
$to = $_GET['regemail'];
$subject = "Thank you for Registering!";
$message = "Hello " . $_GET['dispname'];
$from = "noreply@challengeme.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers) or die('You have successfully registered however mail servers are currently down, you may or may not receive an email');
print "<h1>You have registered successfully</h1>";
print "You will receive an email shortly with your confirmation. You may now log in</a>";
}
else print "passwords do not match";
}
else print"Please fill out all required fields";
?>
</body>
</html>
挑战我
我在SQL查询中使用变量,这就是我的想法
阻止了这种类型的攻击
这就是你错的地方。您要查找的单词是parameters
。($\u GET已经是一个变量,将其分配给另一个变量对安全性没有任何作用)
如果你想坚持使用mysql,你需要在你的变量上使用
您最好的选择是重写,使用or,这样您就可以使用参数化查询,这将自动防止转义和注入
我在SQL查询中使用变量,这就是我的想法
阻止了这种类型的攻击
这就是你错的地方。您要查找的单词是parameters
。($\u GET已经是一个变量,将其分配给另一个变量对安全性没有任何作用)
如果你想坚持使用mysql,你需要在你的变量上使用
您最好的选择是重写,使用or,这样您就可以使用参数化查询,这将自动防止转义和注入
我在SQL查询中使用变量,这就是我的想法
阻止了这种类型的攻击
这就是你错的地方。您要查找的单词是parameters
。($\u GET已经是一个变量,将其分配给另一个变量对安全性没有任何作用)
如果你想坚持使用mysql,你需要在你的变量上使用
您最好的选择是重写,使用or,这样您就可以使用参数化查询,这将自动防止转义和注入
我在SQL查询中使用变量,这就是我的想法
阻止了这种类型的攻击
这就是你错的地方。您要查找的单词是parameters
。($\u GET已经是一个变量,将其分配给另一个变量对安全性没有任何作用)
如果你想坚持使用mysql,你需要在你的变量上使用
您最好的选择是重写,使用or,这样您就可以使用参数化查询,这会自动防止转义和注入。您使用的是$\u GET['regmail'中的值直接在第一个查询中…RTFM:并且您不需要对任何传入数据进行清理或进行任何基本检查&只需让它直接流向您的MySQL查询&您想知道哪里出了问题?!?我的电子邮件是me@example.com'); 删除表用户--代码>为什么不让我注册?@Digital Chris。。。to bad mysql_query()不支持多个用分号分隔的查询语句,但这是一个很好的笑话。您使用的是$\u GET['regmail'中的值直接在第一个查询中…RTFM:并且您不需要对任何传入数据进行清理或进行任何基本检查&只需让它直接流向您的MySQL查询&您想知道哪里出了问题?!?我的电子邮件是me@example.com'); 删除表用户--代码>为什么不让我注册?@Digital Chris。。。to bad mysql_query()不支持多个用分号分隔的查询语句,但这是一个很好的笑话。您使用的是$\u GET['regmail'中的值直接在第一个查询中…RTFM:并且您不需要对任何传入数据进行清理或进行任何基本检查&只需让它直接流向您的MySQL查询&您想知道哪里出了问题?!?我的电子邮件是me@example.com'); 删除表用户--代码>为什么不让我注册?@Digital Chris。。。to bad mysql_query()不支持多个用分号分隔的查询语句,但这是一个很好的笑话。您使用的是$\u GET['regmail'中的值直接在第一个查询中…RTFM:并且您不需要对任何传入数据进行清理或进行任何基本检查&只需让它直接流向您的MySQL查询&您想知道哪里出了问题?!?我的电子邮件是me@example.com'); 删除表用户--代码>为什么不让我注册?@Digital Chris。。。糟糕的mysql_query()不支持多个用分号分隔的查询语句,但这是一个好笑话。。