0

この回答は、ORM が SQL インジェクションから私を保護しない方法を説明していますが、「間違ったことをする」対「正しいことをする」方法については完全にはわかりません。

SQL インジェクションを実行して軽減する方法について、誰かが EntityFramework または Telerik OpenAccess で例を提供できますか?

4

1 に答える 1

2

オブジェクト モデルを介して通信する限り、成熟した ORM には SQL インジェクションの脆弱性がありません。したがって、実行するメソッド(Entity Frameworkを使用)がある場合

dbContext.Companies.Where(c => c.Name == someParameterFromUI)

ユーザーは のような検索パラメーターを入力できます"'x'; drop table Users;"が、クエリ エンジンはクエリをパラメーター化し、唯一の結果は企業が見つからないということです (名前を作ったときに大笑いした企業でない限り)。

しかし..

成熟した ORM にはバックドアがあり、必要に応じて脆弱なコードを記述できます。NHibernate と EF (OpenAccess はわかりません) は、生の SQL クエリをデータベースに送信する方法を提供します。そのため、安全でないものを好きなだけ使用できます。ただし、そうすることで、ORMを使用しなくなったと言いたいです。ORM ツールがユーザーフレンドリーな API で親切に公開するデータベース接続のみを使用しています。

于 2013-12-07T23:58:44.767 に答える