2016-08-05 2 views
1

У меня есть простой скрипт для отправки SQL-запроса в PHP-скрипт, но я не знаю, как я могу защитить его от SQL Injection.C# to PHP SQL Injection Prevention

У вас есть идея? Благодаря!

C# Script

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

запрос для PHP скрипт

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

Отправьте запрос с помощью POST в PHP скрипт

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

PHP скрипт

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

Подключение к базе данных

$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"; 
} 

получающего и выполнить запрос из C#

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

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

mysqli_close($mysqli); 
+2

Связанный: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –

+0

Это зависит от вашего запроса, вызванного источниками, которым вы не доверяете? Если это только о переменных, которые генерируются ненадежными источниками, вы можете использовать ответ Рональда. – iCode4U

ответ

0

Вы можете разделить переменные. Так что в вашем посте у вас есть запрос с заполнителями: INSERT INTO пользователя (имя) ЗНАЧЕНИЯ @ p1

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

Затем вы используете PHP для безопасной замены параметров: http://php.net/manual/en/security.database.sql-injection.php