Security(セキュリティ)

PHP脆弱性対応:XSS(クロスサイトスクリプティング)

今週の主な作業は、お問い合せフォームの脆弱性対策でした。

 

例えば、

入力フォームに「<script>alert("test");</script>」とJavascriptのコードを打ち込まれると、

確認画面に移動した際にこのコードが実行されてしまいます。

 

いわゆる、

XSS(クロスサイトスクリプティング)スクリプトインサーションという現象で、

ユーザーが悪意のあるコードをテキストボックスなどに入力すると、

確認画面でそのまま実行されてしまい、重大な脆弱性に繋がってしまいます。

 

そこで、

入力画面から送られてきた値をhtmlspecialchars()を使って安全に出力する必要があります。

htmlspecialchars()を利用することで、

JavaScriptやHTMLなどの意味のある文字列をエンティティに変換することができます。

 

このように使います。

<?php
echo htmlspecialchars($_POST["name"], ENT_QUOTES, "UTF-8");
?>

 

実際には、配列の値が送られてくることもあり得るので、

私の場合は、

<?php
/*
*説明:特殊文字をHTMLエンティティに変換する
* IN :$string HTMLエンティティの対象となる文字列
* OUT:HTMLエンティティ変換後の文字列
*/
function h($string){
 if(is_array($string)){
  return array_map("h", $string);
 }else{
  return htmlspecialchars($string, ENT_QUOTES, "UTF-8");
 }
}
?>

のような関数を作ってやり、

<?php
foreach($_POST as $key => $val){
 if(!empty($val)){
  $$key = (function_exists("h")) ? h($val) : @htmlspecialchars($val);
 }
}
?>

という具合にして、

送信されてきた入力値を確認画面で処理してやります。

 

まあ、

XSS(クロスサイトスクリプティング)に関してはこれでいいですかね。

 

フォームの脆弱性・セキュリティ対策は、

他にもたくさんあります。

 

それは、

また別の記事で書きます。

 

0
この記事を書いている人
株式会社ディープ

名前ダッチ

メールアドレスadachi@deep-deep.jp

Twitterはこちら >>

  • コメント: 0

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. WP:WordPress(ワードプレス)
  2. WP:WordPress(ワードプレス)
  3. WP:WordPress(ワードプレス)
  4. 文系と理系のメリットとデメリット
  5. 東京駅
  6. 残業
  7. プログラマーになるのに年齢は関係ある?
  8. 年収(収入)
  9. income(収入)
  10. プログラマーになろう

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

アーカイブ

PAGE TOP