奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

自作フレームワーク:security.php

注意:
本プログラムは、
いわゆる徳丸本に書かれているセキュリティ対策の多くは反映してます。
しかし、高難易度の攻撃に耐えられる程の対策は出来ていないと思います。
本プログラムの流用は自由ですが、流用によって生じた損害については、
自己責任でお願いしてますので、その旨ご了承下さい。


自作フレームワークのトップページに戻る



<?php

/**
* セキュリティクラス
*
* 各種のセキュリティ対策を行うクラス
*
* @access public
* @create 2012/01/15
* @version 1.0
*/
class security
{

/**
* HTML出力用のエスケープ処理を行う(XSSで使う)
*
* @access public
* @param mixed $val エスケープしたい値
* @return mixed エスケープされた値
*/
static public function html_escape($val)
{
if (true === is_array($val))
{
// 配列の時
$arr = array();
foreach ($val as $key => $val)
{
// 再帰呼び出しで値をエスケープしてから値をセット
$arr[$key] = self::html_escape($val);
}
return $arr;
}
else
{
// 配列以外の時
if (true === is_null($val))
{
// null
return null;
}
else if (true === is_bool($val))
{
// 論理型
return $val;
}
else
{
// 上記以外の時のみエスケープ
return htmlspecialchars($val, ENT_QUOTES, mb_internal_encoding());
}
}
}

/**
* 第三者が知り得ない秘密情報(トークン)の値を取得する(CSRFで使う)
*
* @access public
* @return string トークン値
*/
static public function get_token()
{
return session_id();
}

/**
* トークンの値をチェックする(CSRFで使う)
*
* @access public
*/
static public function check_token()
{
// トークン確認
if (true === isset($_POST['token']))
{
// hiddenからPOSTされたトークンとセッションIDが違う場合は不正な遷移
if (0 !== strcmp($_POST['token'], self::get_token()))
{
throw new custom_exception('トークン値相違', 1);
}
}
else
{
// hiddenからPOSTされたトークンが未設定時も不正な遷移
throw new custom_exception('トークン値未設定', 1);
}
}
}



スポンサーサイト

テーマ:日記 - ジャンル:日記

  1. 2012/08/11(土) 21:13:34|
  2. 自作プログラム
  3. | トラックバック:0
  4. | コメント:0
<<スキル格差が生む「歪み」をどう埋めれば良いのか | ホーム | 第2回ソーシャルラーニング勉強会で話した内容の記録>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://kitoku1.blog129.fc2.com/tb.php/166-fe91aad1
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。