mysql_real_escape_stringで十分ではありません。また、クエリを構造化する方法も考慮する必要があります。注入がまだ可能である、$username
と$password
の前後に引用符なしで
$username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$sql = "SELECT * FROM users WHERE username = $username AND password = $password";
:以下、簡単なログインスクリプトを考えてみましょう。 (ユーザ名=テストを考える;のDROP TABLEのユーザー; - データバイバイ:(
mysql_real_escape_stringのは、あなたが正しくあなたのクエリを構築するのIFサニタイズ点から十分である適切に構築クエリの場合、これは正常に動作し
。!。。
"あなたは何を防止しようとしていますか?"あなたはまた、保存され反映されたXSS(クロスサイトスクリプティング)を認識している必要があります。ブラウザでは、少なくとも<script>
タグを除外したいでしょう。
あなたの言語に応じて、多くのフィルタとコードがオンラインで利用できます.RailsまたはCodを使用する場合eIgniter、それはあなたのために行われます。
- ダウンロードとdamn vulnerable web appをインストールします。
は限りこの種類のセキュリティに関しては、私は次のように使用することをお勧めします。常に異なる文字セット
- の文字を提出しようとしハッキングウェブのインとアウトを教えるために設計されたアプリケーション(PHPベース)
- はいつもにあまりにも多くのパラメータを渡すNULLバイト
- 回避を提出しようあなたがウェブサイトで再度
- 時計はおしゃべりであることと同じように見えることは決してないだろう - クエリ文字列(それはあなたのデータ構造を離れて与えることができます)
- はあなたのログ
- ダウンロードburpsuiteを見ます。 mysqlのエラーメッセージはデバッグには最適ですが、大量の情報を提供します。多くの場合、クエリ全体が表示されます。
最終行 - ユーザーからのものであれば、はを信頼できません!
。 –