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(クロスサイトスクリプティング)に関してはこれでいいですかね。

 

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

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

 

それは、

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

 

この記事を書いている人
株式会社ディープ
名前足立拓也

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

関連記事

最近の記事

  1. PHP(ピー・エイチ・ピー)
  2. レンタルサーバ:おすすめの共用サーバ
  3. ホームページ(homepage)
  4. システムアップデート
  5. エックスサーバー(XSERVER)
  6. エックスサーバー(XSERVER)
  7. エックスサーバー(XSERVER)
  8. WEBサイト構築
  9. スパム(SPAM)対策
  10. サイト公開

Twitter

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

  • うちの会社も時々ランサーズ使ってるけど、めっちゃ助かってます! 中小は、人件費のような固定費がかさむのは痛くてなかなか新しい人を採用できんから、 必要な時にお互いマッチングして仕事を依頼できるのはありがたいです。 創業者からのメ… twitter.com/i/web/status/1…
    about 8時間 ago via Twitter Web Client

アーカイブ

PAGE TOP