「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > `mysql_real_escape_string()` and `mysql_escape_string()` mysqlインジェクション攻撃を防ぐのに十分ですか?

`mysql_real_escape_string()` and `mysql_escape_string()` mysqlインジェクション攻撃を防ぐのに十分ですか?

2025-03-22に投稿されました
ブラウズ:263

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Prevent MySQL Injection Attacks?

mysqlインジェクション攻撃:より深いダイブ

はじめに

は、Webアプリケーションのセキュリティを保証することです。この記事では、sql攻撃に対する保護において、mysql_real_escape_string()およびmysql_escape_string()を使用する有効性を検証します。 MySQL_ESCAPE_STRING()は、SQLクエリに挿入する前に、データの脱出に一般的に使用されます。ただし、これらの機能はすべての攻撃ベクトルに対する十分な保護ですか?これは、クエリ内のPHP変数を逃れることのみを意図しているためです。逃げるテーブルまたは列名を処理したり、フィールドを制限したりすることはできません。 "どこ " 。 mysql_real_escape_string($ field)。 "="。 mysql_real_escape_string($ value);

このクエリは、$フィールドまたは$値に悪意のある入力が含まれている場合、SQLインジェクションに対して脆弱です。ハッカーは、逃げ出して不正なコマンドを迂回して実行する悪意のあるクエリを作成できます。これにより、テーブル内のすべてのレコードが公開され、潜在的に機密情報が明らかになります。ハッカーは任意のsqlクエリを実行できるようにすることができます。 mysql_real_escape_string($ argv [1])、 mysql_real_escape_string($ argv [2])、 mysql_real_escape_string($ argv [3]));

input 1:

は、 "http://www.reddit.com"でurlsを返します。 exploit)

input 3:

は予期しないsql queries

を実行します。準備されたステートメントは、有効なSQLのみが実行されることを保証するサーバー側の手法です。このアプローチは、既知と未知の両方のSQL注入に対する包括的な保護を提供します。 $列。 '=?制限? '; $ステートメント= $ pdo-> prepare($ sql); $ statement-> execute(array($ value、$ lime));
$sql = "SELECT number FROM PhoneNumbers " .
       "WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
このコードは、作成されたステートメントを使用してユーザー入力をエスケープし、クエリを安全に実行します。注射、完全なセキュリティには十分ではありません。準備されたステートメントは、堅牢なデータベースセキュリティのための推奨アプローチです。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3