2017-07-04 21 views
2

PetaPoco's home pageには、PetaPocoのSQLビルダー(Sqlオブジェクト)がSQLインジェクションから保護するという記述があります。しかし、クエリ(文字列クエリ、パラメータ)メソッドはSQLインジェクションから保護しますか?PetaPocoのクエリ(文字列クエリ、パラメータ)メソッドはSQLインジェクションから保護されますか?

var id = 123; 
var a = db.Query<article>(PetaPoco.Sql.Builder 
    .Append("SELECT * FROM articles") 
    .Append("WHERE [email protected]", id) 
); 

しかし、それはパラメータが次のように渡された文字列のクエリで安全である:

SQL Builderは安全ですか?

var id = 123; 
var a = db.Query<article>("SELECT * FROM articles WHERE [email protected]", id); 
+3

はい、githubでPetaPocoのソースコードを見始めるとしようとします。結局のところ、SqlParameterを使用しています。 https://github.com/CollaboratingPlatypus/PetaPoco/blob/development/PetaPoco/Database.cs#L952 – ngeksyo

答えて

3

はい、SQLインジェクションから保護します。

よくわからない場合は、実行中のSQLでSQLトレースを実行して確認できます。または、入力に(nvarchar列に対して)単一引用符と二重引用符を指定し、実行時例外が発生するかどうかを確認します(SQLインジェクションが問題の場合に発生します)。

https://github.com/CollaboratingPlatypus/PetaPoco/issues/326#issuecomment-238538854参照:

これが正しい動作です。 SQLコマンドとパラメータは、DBコマンドの に渡され、注入ベースの攻撃を防止します。接続されたDB は、SQLとパラメータを安全に組み合わせます

+0

PetaPocoの管理者はこちら。 @mjwillsは正しい – Plebsori

関連する問題