Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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
C# 如何使这三条语句对SQL注入更安全? 1. 2._C#_Php - Fatal编程技术网

C# 如何使这三条语句对SQL注入更安全? 1. 2.

C# 如何使这三条语句对SQL注入更安全? 1. 2.,c#,php,C#,Php,首先,您在SQL语言中没有任何单词 在2和3中,您通过concating字符串创建SQL查询,这是错误的;在2中,您可以使用PDO来准备PDOStatement对象并安全地执行它并传递参数,在第二秒内,您可能可以准备此查询并传递参数,但必须阅读文档如何做 阅读以下内容:首先,您在SQL语言中没有任何单词 在2和3中,您通过concating字符串创建SQL查询,这是错误的;在2中,您可以使用PDO来准备PDOStatement对象并安全地执行它并传递参数,在第二秒内,您可能可以准备此查询并传递参


首先,您在
SQL
语言中没有任何单词

在2和3中,您通过concating字符串创建
SQL查询
,这是错误的;在2中,您可以使用
PDO
来准备
PDOStatement
对象并安全地执行它并传递参数,在第二秒内,您可能可以准备此查询并传递参数,但必须阅读文档如何做


阅读以下内容:

首先,您在
SQL
语言中没有任何单词

在2和3中,您通过concating字符串创建
SQL查询
,这是错误的;在2中,您可以使用
PDO
来准备
PDOStatement
对象并安全地执行它并传递参数,在第二秒内,您可能可以准备此查询并传递参数,但必须阅读文档如何做


阅读此文:

不知道PHP,但在
C
中,您可以使用参数,而不是直接注入值

          MySqlConnection con = new MySqlConnection("host="";user="";password=""; database="";");
            con.Open();
            MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients(username, password, FirstName, SecondName, DiabetesType, Email,Phone, Phone2, Question1, Question2,TreatmentPlan)"
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" + lname.Text + "','" + Dtype.Text + "','" + email.Text + "','" + phone.Text + "','" + phone2.Text + "','" + q1.Text + "','" + q2.Text + "','" + treatment.Text + "')");
            cmd.Connection = con;
            cmd.ExecuteNonQuery();
            con.Close();
只需将
后跟一些标识符来标记您添加的参数,然后使用
AddWithValue
插入实际值。

还展示了如何使用使用正确地处理对象。

不知道PHP,但在C 35;中,您可以使用参数,而不是直接注入值

          MySqlConnection con = new MySqlConnection("host="";user="";password=""; database="";");
            con.Open();
            MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients(username, password, FirstName, SecondName, DiabetesType, Email,Phone, Phone2, Question1, Question2,TreatmentPlan)"
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" + lname.Text + "','" + Dtype.Text + "','" + email.Text + "','" + phone.Text + "','" + phone2.Text + "','" + q1.Text + "','" + q2.Text + "','" + treatment.Text + "')");
            cmd.Connection = con;
            cmd.ExecuteNonQuery();
            con.Close();
只需将
后跟一些标识符来标记您添加的参数,然后使用
AddWithValue
插入实际值。

还显示了如何使用正确处置对象的

选项2。在使用mysql\u real\u escape\u string()插入DB之前,您至少应该是真正的转义字符串


在插入数据库之前,您应该始终验证数据。检查您是否正在获取所需的数据,并替换应获取的所有字符。

对于选项2。在使用mysql\u real\u escape\u string()插入DB之前,您至少应该是真正的转义字符串

在插入数据库之前,您应该始终验证数据。检查您是否正在获取所需的数据,并替换应获取的所有字符。

在C部分:

这些值应作为参数传入。您的命令文本应如下所示:

MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" +  
//...
+ "')");
MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values (@username, @password, @FirstName, 
//...
+ "')");
在这种情况下,你应该有这样的东西:

MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" +  
//...
+ "')");
MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values (@username, @password, @FirstName, 
//...
+ "')");
如果你不这样做,你会自找麻烦。

在C部分:

这些值应作为参数传入。您的命令文本应如下所示:

MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" +  
//...
+ "')");
MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values (@username, @password, @FirstName, 
//...
+ "')");
在这种情况下,你应该有这样的东西:

MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values" + "('" + uname.Text + "','" + password.Text + "','" + fname.Text + "','" +  
//...
+ "')");
MySqlCommand cmd = new MySqlCommand("INSERT INTO Patients (username, password, FirstName, 
//...
+ "values (@username, @password, @FirstName, 
//...
+ "')");

如果你不这样做,你会自找麻烦。

坦率地说,这看起来像是家庭作业或面试问题。如果我错了,拥有更多PHP fu的人可以纠正我(以某种方式误用
echo
执行任意代码?:p),但第一个代码片段对我来说似乎非常安全。你知道,只要它不与数据库交互…
“插入学生(姓名)值(“+”罗伯特”);删除表学生;-“+””
@yes123你刚才有没有逗我玩过?”/@贾斯汀·摩根,这不是你的家庭作业。这是我在自己的时间里为提高技能而做的个人项目。我不太了解sql注入,所以我想问一些简单的建议,我不知道这有什么问题吗?坦率地说,这看起来像是家庭作业或面试问题。如果我错了,拥有更多PHP fu的人可以纠正我(某种误用
echo
执行任意代码的方法?:P),但是第一个代码片段对我来说是非常安全的。你知道,只要它不与数据库交互…
“插入学生(姓名)值(“+”罗伯特”);删除表学生;-“+””
@yes123你刚才有没有逗我玩过?”/@贾斯汀·摩根,这不是你的家庭作业。这是我在自己的时间里为提高技能而做的个人项目。我不太了解sql注入,所以我想问一些简单的建议,我不知道这有什么问题?