質問

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インジェクションから自動的に保護します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top