2016-08-05 8 views
1

Ich habe ein einfaches Skript, um eine SQL-Abfrage an ein PHP-Skript zu senden, aber ich weiß nicht, wie ich es vor SQL-Injection schützen kann.C# zu PHP SQL Injection Prevention

Haben Sie eine Idee? Vielen Dank!

C# Script

private void SQLConnect() 
{ 
string urlAddress = "XXX"; 

Abfrage für das PHP-Script

string query = "INSERT INTO user (name) VALUES ('Test-Name')"; 

Senden Sie die Abfrage per Post an das PHP-Script

using (WebClient client = new WebClient()) 
{ 
    NameValueCollection postData = new NameValueCollection() 
{ 
{ "newQuery", query }, 
}; 
string pagesource = Encoding.UTF8.GetString(client.UploadValues(urlAddress, postData)); 
} 
} 

PHP Script

$db_server = xxx; 
$db_benutzer = 'xxx'; 
$db_passwort = 'xxx'; 
$db_name = 'xxx'; 

Mit Datenbank verbinden

$mysqli = new mysqli($db_server, $db_benutzer, $db_passwort, $db_name); 

if ($mysqli->connect_errno) 
{ 
printf("Connect failed: %s\n", $mysqli->connect_error); 
exit(); 
} 
else 
{ 
echo "Connected...\n"; 
} 

die Abfrage empfangen und ausführen von C#

$newQuery = $_POST["newQuery"];; 

if ($mysqli->query($newQuery) === TRUE) 
{ 
echo("Success...\n"); 
} 

mysqli_close($mysqli); 
+2

Verwandte: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –

+0

Es hängt davon ab, dass Ihre Abfrage von Quellen generiert wird, denen Sie nicht vertrauen? Wenn es nur um die Variablen geht, die von nicht vertrauenswürdigen Quellen erzeugt werden, können Sie die Antwort von Ronald verwenden. – iCode4U

Antwort

0

Sie die Variablen aufgeteilt könnte. Also in Ihrem Beitrag, den Sie eine Abfrage mit Platzhalter haben: INSERT INTO Benutzer (Name) VALUES @ p1

using (WebClient client = new WebClient()) 
{ 
    NameValueCollection postData = new NameValueCollection() 
    { 
     { "newQuery", query }, 
     { "P1", username } 
    }; 
} 

Dann nutzen Sie PHP, um sicher die Parameter zu ersetzen: http://php.net/manual/en/security.database.sql-injection.php