urlを読み込んでいる間にSQLインジェクションやXSSを避ける方法があるかどうかを知りたい。 例: https://abc?ID=いくつかのユニークなguidウェブURLのコードインジェクションを避ける方法
有効なGUIDではなくSQLインジェクションなどを避ける方法。
urlを読み込んでいる間にSQLインジェクションやXSSを避ける方法があるかどうかを知りたい。 例: https://abc?ID=いくつかのユニークなguidウェブURLのコードインジェクションを避ける方法
有効なGUIDではなくSQLインジェクションなどを避ける方法。
できることがいくつかあります。
上に読む
SQL注入は、あなたが求めている部分よりも大きいです。あなたは、データベースに出入りするすべてのデータを認識したいと思っています。上記の提案を実装し、あなたはかなりカバーされるべきです。
元の質問(?id=[guid]
)の件名については、クエリを送信するときにSystem.Guid
データタイプを使用していることを確認する必要があります。 string
がNOTの有効なGUIDである場合、問題があることを知っています。要求を完了しないでください(IE:後でリポジトリに要求を送信しないでください)。確かには送信しません。データベースまで)。
IDのように聞こえます。それが簡単だった場合は、内容を数値にキャストしてから、この型付き変数を使用してください。コンテンツに何か他のものがある場合、システムはただエラーを返します。
最初にすべきことは、SQLインジェクションを不可能にすることです。私の理解では、このアプローチではSQLインジェクションは発生しません。これは「パラメータ化された入力」と呼ばれます。
string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
+ "WHERE CustomerID = @ID;";
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);
2番目の方法は、GUIDをURLに渡さないことです。これにより、変更が非常に簡単になるため、この値をGETの代わりにPOSTに渡すことができます。これにより、SQLインジェクションからの保護はできませんが、少し難しくなり、データの整合性を確保するのに役立ちます。
詳細情報:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx
シンプル。 入力を常にサニタイズします。暗黙のうちに、外部ソース(ユーザー、クライアントマシンなど)から受信したものを絶対に信頼または実行しないでください。
GUIDの場合、文字列の代わりにSystem.Guid
データ型を使用します。つまり、SQLクエリでそれを使用する場合は、GUIDの文字列表現をクエリに連結するだけではありません。 query parametersを使用し、受け取った文字列から作成された実際のSystem.Guid
オブジェクトを渡します。
文字列の解析時に実際にSystem.Guid
を作成できない場合は、入力が無効であることを示します。その時点で、SQLクエリを作成しようとすることや、データアクセスレイヤーを何らかの方法で使用しようとするだけで、ユーザーにエラーを返しても構いません。
IDクエリ文字列パラメータの値を直接データベースに渡さないでください。
C#を使用しているため、クエリーパラメータなどのエンティティフレームワークなどのデータを使用して、データがSQL Server用に正しくフォーマットされるようにすることができます。ただし、有効なGUIDかどうかは確認できません。 SQLインジェクション攻撃の詳細については、クエリタイプ軍)
、ここで私は何年か前に書いた記事です:http://colinmackay.co.uk/blog/2005/04/23/sql-injection-attacks-and-some-tips-on-how-to-prevent-them/
することは同じでは 'System.Guid'で行うことができます –