-5

重複の可能性:
SQL インジェクションを防ぐには?

appRain CMS の SQL インジェクションを修正したい: http://code.google.com/p/apprain-quickstart/downloads/list

誰かが私を助けてくれるなら、どのphpファイルを見て正しい機能を与えてくれれば、それは素晴らしいことです.

mysql_real_escape_string を使用しようとしましたが、使用する正しい関数が見つかりません。

エクスプロイト: http://www.securityfocus.com/archive/1/520911

または: /profile/-1 union all select 1,2,3,version(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

ありがとう

4

1 に答える 1

0

あなたが与えたリンクを正しく読んでください。

問題の解決策はリンクに書かれています

1. 準備済みステートメント クラスを使用して、SQL インジェクションの脆弱性を修正し、SQL エラー リクエストをフィルタリングします。error(0) を設定して、例外またはエラー レポートによる情報漏えいを防ぎます。

2. 入力フィールドを解析し、() > < \ / などの文字を制限して、スクリプトが含まれないようにします。スクリプト コードがモジュール コンテキストから実行されている脆弱な出力セクションも解析します。

準備されたステートメントを作成するには

$oDB=new PDO('..your connection.. ');
$hStmt=$oDB->prepare("select * from users where id=:id");
$hStmt->execute(array(':id',$userID));

上記$userIDは SQL 文字列と結合されていないため、SQL インジェクションは機能しません。

mysqli_real_escape_string の使用

非推奨になっていることに注意してくださいmysql_real_escape_string。代わりに、使用方法について説明しますmysqli_real_escape_string

$a= "'ABCD"; //will not work because of quotation

$a= $mysqli->real_escape_string($a);
   //Now this is the string with special chars escaped

詳細については、こちらをお読みください

PDO PHP で SQL インジェクションを防ぐにはどうすればよいですか?

文字列のエスケープhttp://php.net/manual/en/mysqli.real-escape-string.php

于 2012-12-16T11:23:45.907 に答える