Security(セキュリティ)

PHP

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

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

 

例えば、

入力フォームに「<script>alert("test");</script>」

とJavascriptのコードを打ち込まれると、

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

 

いわゆる、

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

ユーザーが悪意のあるコードを入力すると、

確認画面でそのまま実行されてしまい、

重大な脆弱性に繋がってしまいます。

 

そこで、

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

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

 

このように使います↓

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

 

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

私の場合は、

/*
*説明:特殊文字を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");
  }
}

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

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

という具合にして、

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

 

まあ、

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

 

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

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

 

それは、

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

 

WordPress短期学習プログラム

関連記事

  1. PHP(ピー・エイチ・ピー)

    PHP

    Smartyで日時を扱う方法

    {$smarty.now}で日時を取得Smartyで日時を…

  2. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】FPDF PDFセル内での改行

    セル内で長い文章を改行FPDFを使っている場合、1つのセル内に…

  3. PHP(ピー・エイチ・ピー)

    PHP

    新着情報の不具合

    お客さんから、ホームページに表示させている新着情報が表示されなくな…

  4. CakePHP

    PHP

    Indirect modification of overloaded element of Cak…

    $this-&gt;data = "1";といった具合で、Ca…

  5. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】メモリ使用量を測定

    memory_get_usage:PHPのスクリプトに割り当て…

  6. PHP(ピー・エイチ・ピー)

    PHP

    PHP4では読み込めていたんですが。。。

     先日、急にあるプログラムが正常に動作しなくなったとの報告がありま…

コメント

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

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

最近の記事

  1. SEO関連タグ
  2. SEO関連タグ
  3. レンタルサーバー(共用サーバー)
  4. システム開発用のアイキャッチ
  5. システム開発用のアイキャッチ
  6. ドメイン 利用制限
  7. WP:WordPress(ワードプレス)
  8. システム開発用のアイキャッチ
  9. システム開発用のアイキャッチ
  10. Theme(テーマ)の選択
PAGE TOP