-1

少し前にウェブサイトの構築を開始し、 の使用についてよく耳mysqli_real_escape_stringにするようになりました。私が見ることができることから、ユーザーが私のウェブサイトに何かを入力するときだけ、本当にそれを使用する必要がありますか? 現時点では、ページ間でデータを送信するために多くの jquery.post を使用しています。そのうちのいくつかはすでにデータベースから取得されており、一部はユーザー入力からのものです。渡されたすべてのものをエスケープするのは正しいですか、それともどのユーザー追加?

現時点で私のコードは次のとおりです。

$con = //Connection to Database

$time = time();
$id= time().'-'.mt_rand(1000, 9999);
$poster= mysqli_real_escape_string($con, $_REQUEST["poster"]);
$type= mysqli_real_escape_string($con, $_REQUEST["type"]);
$post= mysqli_real_escape_string($con, $_REQUEST["post"]);
$lat= mysqli_real_escape_string($con, $_REQUEST["lat"]);
$lon= mysqli_real_escape_string($con, $_REQUEST["lon"]);
etc
etc
4

2 に答える 2

0

ほとんど使用しないでください。代わりに、準備済みステートメントとバインドされたパラメーターを使用してください。

データベースをインジェクションから保護するために使用するものは何でも、まだ明示的に SQL ではないすべてのコンテンツに適用する必要があります。これには、別のクエリによってデータベースから取り出されたデータが含まれます (ただし、その場合、JOIN を使用してクエリの数を減らすことを検討することをお勧めします)。

データベースから出て、ブラウザに送信されてから返送されたデータは、ユーザー入力と見なす必要があります。これはユーザーの手に渡っており、変更することができます。

(また、カスタム クエリ (phpMyAdmin など) を必要とするものを作成していて、ユーザーを非常に信頼している場合を除き、ユーザーが "明示的に SQL" であるデータをサーバーに渡すことを許可しないでください)

于 2013-08-21T16:11:21.507 に答える