Kohana 2.3.4 ORM SQL注入保護
-
10-10-2019 - |
質問
Kohanaは、MySQL_REAL_ESCAPE_STRINGを使用して、ドキュメントでデータベース入力をサニタイズすると述べています。ただし、フォームを通していくつかの基本的なクエリを試飲している間、それらは私が入力したときとまったく同じようにデータベースに入力されました。例えば:
SELECT * FROM users WHERE username='admin' AND password='' OR ''=''
表示されているように、そのmysqlデータに入力されます。私は見ることを期待していました:
SELECT * FROM users WHERE username=\'admin\' AND password=\'\' OR \'\'=\'\'
データベースの代わりにORMライブラリを使用していますが、それらが一緒に働くことは知っています。また、組み込みの入力ライブラリ($ this-> input-post)を使用して、フォームからデータを収集しています。セキュリティに関連するコントローラーやライブラリを変更していません。
私はまだソースコードをcombしていませんが、コハナは文字列を逃がしてから、dbフィールドに入力する前にスラッシュを削除しますか?私はこれが事実であるといくらか確信していますが、私は確信したいです。
ありがとう
解決
SQLクエリを逃れると、リテラルデータを逃れて、ApoStrophesが文字列デリミターと解釈されないように、SQL構文と競合しないようにします。 MySQLは、データを逃がす必要があるデータを逃がす必要がないことなく、無効なアポストロフィなどを保存できます。データを逃げ出したフォームに保存するのは間違いであるため、取得した後に再び展開する必要があります。
私はKohanaに精通していませんが、クエリを保存するように依頼し、まったく同じクエリを戻すと、入力を適切に処理していることを安心できます。
他のヒント
Kohana Ormは、SQLインジェクションから自動的に保護します。
所属していません StackOverflow