私の質問は、スクリプトまたはその他の自動メソッドを使用して、すべてを変更する方法です
$_POST['*'] 変数、すべての PHP ファイルで、
MySQL インジェクションに耐性のある同等品。
このトピックでは、グーグルで何も見つかりませんでした。
このトピックは役に立つかもしれません: PHP で SQL インジェクションを防ぐにはどうすればよいですか?
前もって感謝します!
私の質問は、スクリプトまたはその他の自動メソッドを使用して、すべてを変更する方法です
$_POST['*'] 変数、すべての PHP ファイルで、
MySQL インジェクションに耐性のある同等品。
このトピックでは、グーグルで何も見つかりませんでした。
このトピックは役に立つかもしれません: PHP で SQL インジェクションを防ぐにはどうすればよいですか?
前もって感謝します!
これを確実に行うことはできません。これはまさに PHP 開発者が不運なマジック クォート機能で実現しようとしていたことですが、どこにいてもすべての人に機能するわけではありません。
セキュリティは、作成後にアプリケーションに追加できるものではありません。そのために設計する必要があります。この場合、すべての SQL クエリを再確認し、安全な方法で書き直す必要があることを意味します。
Jon が既に述べたように、すべての SQL クエリをアプリケーションでレビューする必要があります。
ただし、可能な(くだらない)解決策で質問に答えるには、Apacheを使用している場合、これを試すことができます..
php.ini
設定できるようにしますauto_prepend_file
.htaccess
php_value auto_prepend_file mysql_magic_quote.inc.php
あなたに書く.htaccess
mysql_magic_quote.inc.php
例:
foreach($_POST as &$var)
$var = addquotes($var);
foreach($_GET as &$var)
$var = addquotes($var);
foreach($_COOKIE as &$var)
$var = addquotes($var);
foreach($_REQUEST as &$var)
$var = addquotes($var);
ご注意ください:
magic_quotes_gpc
、これは何らかの理由で非推奨になっています!mysql_real_escape_string()
開いているデータベース接続が必要になるため、ここでは使用しませんでした。mysql_escape_string()
これも非推奨であるため、ここでは使用しませんでした。addslashes() の使用例は、データベースにデータを入力する場合です。たとえば、O'reilly という名前をデータベースに挿入するには、エスケープする必要があります。DBMS 固有のエスケープ関数 (MySQL の場合は mysqli_real_escape_string()、PostgreSQL の場合は pg_escape_string() など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、DBMS が \ を使用して特殊文字をエスケープする場合は、この機能を使用できます。これはデータベースにデータを取得するためだけのものであり、余分な \ は挿入されません。PHP ディレクティブの magic_quotes_sybase を on に設定すると、' が代わりに別の ' でエスケープされます。
PHP ディレクティブの magic_quotes_gpc は、PHP 5.4 より前はデフォルトでオンになっており、基本的にすべての GET、POST、および COOKIE データに対して addslashes() を実行していました。二重エスケープを行うため、magic_quotes_gpc で既にエスケープされている文字列に対して、addslashes() を使用しないでください。関数 get_magic_quotes_gpc() は、これを確認するのに便利です。