Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的MySQL数据库被删除了,我认为这是SQL注入,我错在哪里?_Php_Mysql - Fatal编程技术网

Php 我的MySQL数据库被删除了,我认为这是SQL注入,我错在哪里?

Php 我的MySQL数据库被删除了,我认为这是SQL注入,我错在哪里?,php,mysql,Php,Mysql,所以我有一个测试数据库是实时的,我去度假回来,我的MYSQL数据库被删除了数据(只有大约8行)。这都是测试数据,所以我不担心,我的想法是,我是通过PHP注册表单注入SQL的,但我在这里没有看到任何漏洞 我在SQL查询中使用变量,我认为这可以防止这种类型的攻击 我不知道漏洞在哪里。我只有5个文件,这是一个我认为是问题所在的文件,它从以前的表单接收数据 <html> <head> <meta http-equiv="Content-Type" content="text

所以我有一个测试数据库是实时的,我去度假回来,我的MYSQL数据库被删除了数据(只有大约8行)。这都是测试数据,所以我不担心,我的想法是,我是通过PHP注册表单注入SQL的,但我在这里没有看到任何漏洞

我在SQL查询中使用变量,我认为这可以防止这种类型的攻击

我不知道漏洞在哪里。我只有5个文件,这是一个我认为是问题所在的文件,它从以前的表单接收数据

<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()不支持多个用分号分隔的查询语句,但这是一个好笑话。。