私のWebプロジェクト用のDALを作成するのにSubSonicを使用する場合、SQLインジェクション攻撃を防ぐことを心配する必要がありますか?Sqlインジェクション攻撃とサブソニック
2
A
答えて
6
これは、クエリの作成方法によって異なります。パラメータを使用しない場合、亜音速で安全でないクエリを書くことは完全に可能です。
// Bad example:
string sql = "delete from Products where ProductName = " + rawUserInput;
QueryCommand qry = new QueryCommand(sql, Product.Schema.Provider.Name);
DataService.ExecuteQuery(qry);
// Should be:
string sql = "delete from Products where ProductName = @TargetName";
QueryCommand qry = new QueryCommand(sql, Product.Schema.Provider.Name);
qry.AddParamter("@TargetName", rawUserInput, DbType.String);
DataService.ExecuteQuery(qry);
6
いいえ、SubSonicは、パラメータを使用してデータベースにデータを渡します。これは、これを処理します。
4
短い答えはいいえです。 Subsonic GeneratedクラスまたはSubsonic.Selectクラスを使用してクエリ/更新/挿入ステートメントを生成する場合、SubSonicがParametersを正しく使用することを心配する必要はありません。
しかし、あなたが安全でないSQLを書いてしまって、SubSonicがあなたを許してしまうのであれば、Paulはそれを指摘しました。亜音速はあなたの親友に似ていますが、それはあなたの決定であることを決めるならば、あなたに言わないでしょう。
1
ポールのジャスト再存在する例(あなたが制約をFK場合)
string rawUserInput = "Queso Cabrales1";
#region BadExample
//string sql = "delete from Products where ProductName = " + rawUserInput;
////QueryCommand objQueryCommand = new QueryCommand(sql, Product.Schema.Provider.Name);
////DataService.ExecuteQuery(objQueryCommand);
#endregion BadExample
#region BetterExample
// Should be:
string sql = "update Products set ProductName = @ProductName where ProductName='Queso Cabrales'";
QueryCommand objQueryCommand = new QueryCommand(sql, Northwind.Product.Schema.Provider.Name);
objQueryCommand.AddParameter("@ProductName" , rawUserInput, DbType.String);
DataService.ExecuteQuery(objQueryCommand);
panGvHolder.Controls.Clear();
Query qry = Northwind.Product.CreateQuery();
qry.Columns.AddRange(Northwind.Product.Schema.Columns);
qry.WHERE("UnitPrice > 15").AND("UnitsInStock < 20 ");
//WHERE("UnitPrice > 15").AND("UnitsInStock < 30 ");
#endregion BetterExample
#region PresentResultsReplaceResponseWriteWithConsole.WriteLineForConsoleApp
using (IDataReader rdr = qry.ExecuteReader())
{
Response.Write("<table>");
while (rdr.Read())
{
Response.Write("<tr>");
for (int i = 0; i < rdr.FieldCount; i++)
{
Response.Write("<td>");
Response.Write(rdr[i].ToString() + " ");
Response.Write("<td>");
} //eof for
Response.Write("</br>");
Response.Write("</tr>");
}
Response.Write("<table>");
}
#endregion PresentResultsReplaceResponseWriteWithConsole.WriteLineForConsoleApp
} //eof method
関連する問題
- 1. asp.net - SQLインジェクション攻撃後のクリーンアップ方法
- 2. HTTPS攻撃とMITM攻撃
- 3. ファイアベースでのjavascriptインジェクション攻撃のリスク
- 4. .NET DataView RowFilterに対するインジェクション攻撃
- 5. SQLインジェクション攻撃のフォーマットが間違っていますか?
- 6. これはSQLインジェクション攻撃の例ですか?
- 7. ASP登録フォームページに対するSQLインジェクション攻撃?
- 8. SqlCommand以外でSQLインジェクション攻撃を実行できますか?
- 9. SQL Serverの:引数のためにインジェクション攻撃に対する@param
- 10. 誰かが私にこのSQLインジェクション攻撃を説明できますか?
- 11. 可能な限り小さなSQLインジェクション攻撃文字シーケンスは何ですか?
- 12. このサイトはSQLインジェクション攻撃に対して脆弱ですか?
- 13. Datastax Java Driverはインジェクション攻撃に対して脆弱ですか?
- 14. ACUNETIX - ログインページのパスワード推測攻撃 - ブルートフォース攻撃とアカウントロックアウト
- 15. 防御攻撃
- 16. ヒープオーバーフロー攻撃
- 17. クロスサイトスクリプティング攻撃、トラブル
- 18. バッファオーバーフロー攻撃
- 19. XSS攻撃
- 20. Java:レイジーロードシングルトンとリフレクション攻撃?
- 21. XSS攻撃防止
- 22. OpenGL Depth Spaz攻撃
- 23. .NETの動的SQLでテーブル名または列名をサニタイズしますか? (防止SQLインジェクション攻撃は)
- 24. SELECT文からSQLインジェクション攻撃を受けることはできますか?実際
- 25. このLINQベースの検索は、SQLインジェクション/ XSS攻撃に対して安全ですか?
- 26. これはデータをフィルタリングしてSQLインジェクションやその他の攻撃を防ぐ安全な方法ですか?
- 27. Spring JDBCはSQLインジェクション攻撃から何らかの保護を提供しますか?
- 28. SQLインジェクション攻撃のURLを確認するにはどうすればよいですか?
- 29. XSS攻撃やスタイルが似
- 30. フォーマットストリングCでの攻撃
んが、私たちは、直接SQLを使用していないことはありませんので、私たちは亜音速で安全になると仮定することができます! – TheVillageIdiot