PHP安全関数フィルタ例
文書ディレクトリ htmlentities()関数 htmlspecialchars()関数 str_Ireplace()関数 str_replace()関数 strip_tags()関数 htmlentities()関数
文字をHTMLエンティティに変換
フォーム入力alert(1);その後、<>がエスケープされていることがわかります(もちろん他にも入力できますが、文字であればHTMLエンティティに変換されます)
htmlspecialchars()関数
定義済みの文字をHTMLエンティティに変換&(和号)になる& "(二重引用符)は" ’(一重引用符)は’ となる.<(より小さい)は< となる.>(より大きい)は> となる
フォームに「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を入力しても同じ結果になります.
str_replace()関数
文字列の一部を置換(大文字と小文字を区別)
とstr_Ireplace()関数と同様に,本関数は大文字と小文字を区別し,ここではあまり説明しない.
strip_tags()関数
文字列のHTML、XML、PHPのラベルを剥がす
フォーム入力alert(1);その後、HTMLタグがフィルタリングされていることがわかります
現在、このいくつかしかテストされていませんが、より安全な方法は、正規表現とフロントエンドJavaScriptで初めてフィルタリングし、バックエンドPHPで再びフィルタリングし、暗号化して安全を保証することをお勧めします.間違いがあれば、指摘を歓迎します.
ブログを掲載しました:行雲ブログ
文字をHTMLエンティティに変換
$a = $_GET[fname];
$a1 = htmlentities($a);
echo '
$a1.'">
'
.$a1.'
';
?>
フォーム入力alert(1);その後、<>がエスケープされていることがわかります(もちろん他にも入力できますが、文字であればHTMLエンティティに変換されます)
<script>alert(1);</scrpit>
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で再びフィルタリングし、暗号化して安全を保証することをお勧めします.間違いがあれば、指摘を歓迎します.
ブログを掲載しました:行雲ブログ