c# 到 PHP SQL 注入预防
Posted
技术标签:
【中文标题】c# 到 PHP SQL 注入预防【英文标题】:c# to PHP SQL Injection Prevention 【发布时间】:2016-12-11 16:06:51 【问题描述】:我有一个简单的脚本可以将 SQL 查询发送到 php 脚本,但我不知道如何保护它免受 SQL 注入。
你有什么想法吗?谢谢!
C# 脚本
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);
【问题讨论】:
相关:***.com/questions/60174/… 这取决于您的查询是由您不信任的来源生成的吗?如果它只是关于由不受信任的来源生成的变量,您可以使用 Ronald 的答案。 【参考方案1】:您可以拆分变量。因此,在您的帖子中,您有一个带有占位符的查询:INSERT INTO user (name) VALUES @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
【讨论】:
以上是关于c# 到 PHP SQL 注入预防的主要内容,如果未能解决你的问题,请参考以下文章