[セキュリティ]常に使用がクエリをパラメータ化

SQLデータベースは、一般的にデータを格納するために使用されています。例えば ​​- あなたのアプリケーションは、データベース内のユーザプロファイル情報を格納することができます。あんたは、生のユーザ入力を使用してコード内のインラインSQLまたはその他のデータベースクエリを作成していないし、データベースに直接送信ありません。上で見たように、この動作は、災害のためのレシピです。

たとえば - 次のインラインSQLの例のようなコードを作成しないでください。

文字列のuserName =場合、Request.QueryString [ " ユーザー名" ]; // ユーザーは用心からの入力を受け取ります!
...
 文字列のクエリ= " [DBO] SELECT * FROM [ユーザー]のuserName = ' " + userNameに+ " ' " ;

ここでCONCATENATEテキスト文字列が一緒に、ユーザからの入力を取得し、ユーザーを検索するには、動的SQLクエリを生成し、クエリを作成します。悪意のあるユーザーが、我々はこれをやって、あるいは単にして実現した場合に再度、  試してみました  脆弱性があったかどうかを確認するために、異なる入力スタイルを、私たちは、大規模災害で終わることができました。代わりに、使用はこのようなSQL文またはストアドプロシージャをパラメータ化:

- 検索ユーザーは、
CREATE  PROCEDURE sp_findUserを
@UserNameの VARCHAR50 

SELECT  *   FROM   [ DBO ][ ユーザー]  WHEREのuserName =  @UserName

この方法で、あなたはそれを渡し、安全にあなたのコードからプロシージャを呼び出すことができ  userName 、それがSQL文の一部として扱われる心配をせずに文字列を。

おすすめ

転載: www.cnblogs.com/Answer1215/p/11925645.html