ホームページ > バックエンド開発 > PHPの問題 > PHP アンチ SQL インジェクションの原理

PHP アンチ SQL インジェクションの原理

(*-*)浩
リリース: 2023-02-27 19:00:02
オリジナル
2517 人が閲覧しました

SQL インジェクション: Web フォームの送信に SQL コマンドを挿入したり、ページ リクエストのドメイン名やクエリ文字列を入力したりすることで、最終的にはサーバーをだまして悪意のある SQL コマンドを実行させます。

PHP アンチ SQL インジェクションの原理

# プリペアド ステートメントは、パラメーター値の送信後にさまざまなプロトコルが使用され、データの正当性が保証されるため、SQL インジェクションに非常に役立ちます。前処理は、実行する SQL のコンパイルされたテンプレートとして認識され、変数パラメーターを使用してカスタマイズできます。 (推奨学習: PHP ビデオ チュートリアル)

防御方法 1

##mysql_real_escape_string – SQL ステートメントの特殊文字で使用される文字列をエスケープします。接続の現在の文字セット !

$sql = "select count(*) as ctr from users where username
='".mysql_real_escape_string($username)."' and
password='". mysql_real_escape_string($pw)."' limit 1";
ログイン後にコピー

方法 2:

magic_quotes_gpc を開いて SQL インジェクションを防止します。 php.ini には、magic_quotes_gpc =

Off という設定があります。これはデフォルトではオフになっています。オンにすると、' を ' に変換するなど、ユーザーが送信したクエリが自動的に SQL に変換されます。 SQL インジェクションを防ぐためなど、すべての違いが生じます。

magic_quotes_gpc=Off の場合は、addslashes() 関数を使用します。

方法 3:

カスタム関数

function check_param($value=null) { 
 #select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile
$str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';
if(!$value) {
        exit('没有参数!'); 
    }elseif(eregi($str, $value)) { 
        exit('参数非法!');
    } return true; 

} 
function str_check( $value ) {
   if(!get_magic_quotes_gpc()) { 
   // 进行过滤 
   $value = addslashes($value); 
   } 
   $value = str_replace("_", "\_", $value); 
  $value = str_replace("%", "\%", $value); 
   return $value; 

} 
function post_check($value) { 
        if(!get_magic_quotes_gpc()) {
    
  // 进行过滤  
            $value = addslashes($value);
        } 
        $value = str_replace("_", "\_", $value); 
        $value = str_replace("%", "\%", $value); 
        $value = nl2br($value); 
        $value = htmlspecialchars($value); 
        return $value; 
    }
ログイン後にコピー

以上がPHP アンチ SQL インジェクションの原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート