我在C#中为MS SQL 2005创建一个程序集.该程序集创建一个存储过程,并根据传递给存储过程的参数运行动态查询.
C#中是否有一个简单的函数来阻止SQL注入?
例如
string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";
Run Code Online (Sandbox Code Playgroud)
标准查询回答了这个问题......但是在无法构建真正动态查询的情况下,我可以在C#中使用什么来进行注入检查?
例如,这些可能不起作用:
使用@dbName;
SELECT*FROM @table
OPEN SYMMETRIC KEY @keyName
等等
在对stackoverflow进行了长时间的搜索后,我没有找到任何人谈到这个,即使它是一个很大的选择,问题是什么是最好的,以防止XSS和SQL注入,逃避数据然后将其存储在数据库中或按原样存放并在输出时转义?
注意:如果可能的话,给出一些实践的例子会更好.
谢谢
我有一个我从CSV文件创建的SQL文件.它包括美国所有大都市区的名称,以及一些有关其人口的统计数据.我编写了一个PHP脚本,它接收填充数据,将其转换为图表,并将其粘贴到城市的行中,位于不同的列中.这个剧本运行良好,直到它来到爱达荷州Coeur d'Alene.我认为这是因为城市名称中的撇号(单引号).这是代码:
$query = "UPDATE population SET `$columnname`='$chart_url' WHERE name = '$cityname'";
mysql_query($query) or die;
Run Code Online (Sandbox Code Playgroud)
因此它通过将其与城市名称相匹配来找到该行.由于数据的原因,没有任何其他方法可以做到这一点.有没有办法处理SQL文件中已经没有未转义字符的数据?
我在访问或插入数据库之前在每个$ _get或$ _post中使用它.
我确定这还不够......但它有多安全?我可以将它与一些表达相结合,使其更安全吗?
非常感谢!
那怎么样?mysql_real_escape_string(htmlspecialchars($ value));
如何在PHP中阻止sql注入但仍显示"和"?我正在使用的那一刻
$input = strip_tags($input);
$input = htmlentities($input);
Run Code Online (Sandbox Code Playgroud)
然而,输出是\"和\'.无论如何,我可以显示"和'没有斜线,但保持它们,所以我不注入?
我正在使用jQuery和PHP进行实时搜索,但我不确定我的查询是否容易受到SQL注入攻击.
在jQuery的帮助下键入字符时,数据被发布到PHP文件中.
$searchData = $_POST['searchData'];
$searchResult = mysql_query("SELECT * FROM songs WHERE songname LIKE '$searchData%' ");
echo $searchResult;
Run Code Online (Sandbox Code Playgroud)
这容易受到SQL注入吗?
这是这个问题的后续问题:PHP的addslashes是否容易受到sql注入攻击?(感谢在那里回复的每个人).
相同的场景,但我有这个代码(在另一页):
$ID = $_GET['id'];
$sql = "SELECT * FROM blog WHERE id='$ID'";
$result = mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
这应该很容易被利用,对吧?
如果我没记错的话,我不能在mysql_query()中运行第二个查询,但我应该能够做一些其他恶意的事情,对吧?希望能够将用户插入管理表或更改密码或其他内容,但我认为除了触摸博客表之外我无法做任何其他事情.那是对的吗?关于我如何玩耍和调整某些东西以证明有顾虑的任何建议?
我见过以下代码:
$id = $_GET["user"];
$auth = $_GET["id"];
$sql = 'DELETE FROM categories where user_id = '.$id.' and category_id = '.$auth;
Yii::app()->db->createCommand($sql)->execute();
Run Code Online (Sandbox Code Playgroud)
我被告知这段代码不行,因为它无法允许sql注入.
是因为$ _GET没有被正确过滤?
不会是Yii :: app() - > db-> createCommand($ sql) - > execute(); 避免那样?
或者当我们到达那里时,我们应该已经检查了where子句中的数据?
我试图以防止SQL注入(标准网站)的方式为MySQL设置PHP查询.
我有几个INSERT查询,其中更改此工作正常,但在以下SELECT我不断收到错误,因为更新,它看起来像while循环不适用于我所做的更改(它运行良好,不使用语句作为在旧代码中).
谁能告诉我这里做错了什么?
新PHP:
$stmt = $conn->prepare("SELECT ? FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, ?");
$stmt->bind_param('s', $selectedLang);
$stmt->execute();
$result = $stmt->get_result();
while($arrCalWeekdays = $result->fetch_assoc()){
$calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)
旧PHP(更改部分):
$sql = "SELECT " . $selectedLang . " FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, " . $selectedLang;
$result = $conn->query($sql);
while($arrCalWeekdays = $result->fetch_assoc()){
$calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)
错误信息:
致命错误:在第21行的/homepages/21/d580042014/htdocs/myform.php中调用非对象上的成员函数fetch_assoc()
提前谢谢了.
string.sanitize是保护sql注入的最佳方法.
我们需要为它安装Sanitize gem还是有更好的方法?
value = "O'Brian"
value.sanitize =>"O\'Brian"
or
value.escape =>"O\'Brian"
Run Code Online (Sandbox Code Playgroud)
它可能默认包含在Rails 5中,但是如何使用sinatra.
sql-injection ×10
php ×7
mysql ×6
sql ×4
security ×3
assemblies ×1
c# ×1
ruby ×1
select ×1
sinatra ×1
sql-server ×1
xss ×1
yii ×1