2016-07-06 8 views
0

自動SQL注入防止PHPライブラリはありますか?何かのように、サイトのコードを実行し続ける前に、GET、POST、着信可能なSQL攻撃シグネチャをチェックしてください。例のように自動SQL注入防止PHPライブラリ

http://www.example.com/index.php?page_id=「)/ /ユニオン//ALL//SELECT//NULL、NULL、NULL、NULL、NULL、NULL、NULL、NULL、NULL、NULL -/**/uHkS

上記のURLでは、GETパラメータでSQL構文を渡しましたが、PHPライブラリはGET、POSTパラメータをチェックしてからプロジェクトコードが実行され、SQL攻撃が含まれていればすぐにリクエストが存在します。 。

+2

プリペアドステートメントを使用してSQLインジェクションを防止することができます – Jens

+0

[PDO](http://php.net/manual/en/book.pdo.php)と[準備文](http://php.net /manual/en/pdo.prepared-statements.php) –

+0

ストアドプロシージャもSQLインジェクションに対して強く推奨されます。 – rhazen

答えて

0

他のコメントに書かれていたように、要求に基づいてデータベースへの攻撃を自動的に検出するライブラリはありません。

データベースの操作を脅かす可能性のあるデータが入っている場合は、すぐにリクエストをキャンセルすることは本当に悪いことです。

通常のフォームを使用名の入力に使用します。彼の名前はBrian O'Connor ...まあ、あなたのプログラムを使うことができないようです。

ユーザがデータベースを台無しにしたい場合、ライブラリにはセマンティックチェックが必要です。このセマンティックチェックを行うためには、実際にどのような種類のデータが期待されているかを知る必要があります。上記の例では、名前を期待するときには、「ドロップテーブル」は入力したくないと思われるかもしれませんが、すべての入力に必要なルールを定義するのはオーバーヘッドになります。

あなたは常に(準備された文やデータベースapiのエスケープ/引用機能を使用して)正しくユーザーデータを扱うと、あなたのテーブルに奇妙なデータがあります。それは私が推測するあなたを傷つけることはありません。

-2

あなたがPDOPrepared Statementsを使用して、データベース側で行うこともできますし、サーバーサイドスクリプトの最後にPOSTまたはGETデータをサニタイズすることができますものがあります。

$safe_data=filter_input(INPUT_GET, 'comment', FILTER_SANITIZE_SPECIAL_CHARS); 

この機能は、一度に一つのGETパラメータで動作するので、あなたは新しい配列を作成する関数を記述する場合があります(例えば$SAFE_GET)一度にそれらすべてをサニタイズGETパラメータ通じた反復処理し、 。

また、あなたがHTMLの安全のためにすべての入力をサニタイズをデフォルトにphp.iniファイル内のディレクティブを設定することができます。

filter.default="special_chars" 

私はそれをサニタイズすることができ、PHPのライブラリがあるとは思いません。データをどのように扱うかには注意が必要です。

POSTGETの両方について、ユーザー入力の消毒を行います。 Fuzz TestingのすべてのタイプでQ & Aを実行する場合は、アプリケーションを保護する必要があります。

+0

* HTML * -escapeは* SQL *インジェクションと関連がありますか? –

+0

はいつですか?悪意のある人がフォームを使用するとどうなりますか? – unixmiah

+0

悪意のあるものがフォームを使用しない場合はどうなりますか? –

関連する問題