PHP安全関数フィルタ例


文書ディレクトリ
  • htmlentities()関数
  • htmlspecialchars()関数
  • str_Ireplace()関数
  • str_replace()関数
  • strip_tags()関数
  • htmlentities()関数
    文字をHTMLエンティティに変換
      
     $a = $_GET[fname];
     $a1 = htmlentities($a);
     
     echo '
    

    .
    $a1.'">

    '

    .$a1.' '; ?>

    フォーム入力alert(1);その後、<>がエスケープされていることがわかります(もちろん他にも入力できますが、文字であればHTMLエンティティに変換されます)
    &lt;script&gt;alert(1);&lt;/scrpit&gt;
    

    htmlspecialchars()関数
    定義済みの文字をHTMLエンティティに変換
  • &(和号)になる&
  • "(二重引用符)は"
  • ’(一重引用符)は’
  • となる.
  • <(より小さい)は<
  • となる.
  • >(より大きい)は>
  • となる
      
     $a = $_GET[fname];
     $a1 = htmlspecialchars($a);
     
     echo '
    

    .
    $a1.'">

    '

    .$a1.' '; ?>

    フォームに「alert(1);</scrpit>と入力すると、予め定義された文字がエスケープされていることがわかります</p>
    <pre><code class="prism language-php"><span class="token operator">&</span>quot<span class="token punctuation">;</span><span class="token operator">&</span>lt<span class="token punctuation">;</span>script<span class="token operator">&</span>gt<span class="token punctuation">;</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator">&</span>lt<span class="token punctuation">;</span><span class="token operator">/</span>scrpit<span class="token operator">&</span>gt<span class="token punctuation">;</span>
    </code></pre>
    <h4>str_Ireplace()関数</h4>
    <p>文字列の一部を置換する(大文字と小文字を区別しない)</p>
    <pre><code class="prism language-php"> <span class="token delimiter important"><?php</span>
    <span class="token variable">$a</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span>fname<span class="token punctuation">]</span><span class="token punctuation">;</span>
    <span class="token variable">$a1</span> <span class="token operator">=</span> <span class="token function">str_ireplace</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"script"</span><span class="token punctuation">,</span> <span class="token double-quoted-string string">"scr_ipt"</span><span class="token punctuation">,</span> <span class="token variable">$a</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">echo</span> <span class="token single-quoted-string string">'
    <form action="form.php"method="get"align="center">
    <h3>ろ過試験</h3>
    <input type="text"name="fname"value="'</span><span class="token punctuation">.</span><span class="token variable">$a1</span><span class="token punctuation">.</span><span class="token single-quoted-string string">'">
    <br/>
    <input type=「submit」value=「コミット」>
    <h3>'</span><span class="token punctuation">.</span><span class="token variable">$a1</span><span class="token punctuation">.</span><span class="token single-quoted-string string">'</h3>
    </form>'</span><span class="token punctuation">;</span>
    <span class="token delimiter important">?></span>
    </code></pre>
    <p>フォーム入力<script>alert(1);その後、scriptはscr_にフィルタリングされていることがわかります.iptです(もちろん他の文字をフィルタリングする設定もできますが、これはその例にすぎません)
    PS:この関数は大文字と小文字を区別しないので、SCRIPTを入力しても同じ結果になります.
    alert(1);
    

    str_replace()関数
    文字列の一部を置換(大文字と小文字を区別)
    とstr_Ireplace()関数と同様に,本関数は大文字と小文字を区別し,ここではあまり説明しない.
    strip_tags()関数
    文字列のHTML、XML、PHPのラベルを剥がす
    
    


    '.$a1.'

    '; ?>

    フォーム入力alert(1);その後、HTMLタグがフィルタリングされていることがわかります
    alert(1);
    

    現在、このいくつかしかテストされていませんが、より安全な方法は、正規表現とフロントエンドJavaScriptで初めてフィルタリングし、バックエンドPHPで再びフィルタリングし、暗号化して安全を保証することをお勧めします.間違いがあれば、指摘を歓迎します.
    ブログを掲載しました:行雲ブログ