PHPでセキュリティ対策の便利な関数があれば是非教えていただきたいです。
一応自分でも作成したのでアドバイス頂けると幸いです。
XSS対策
function escape($data){ if (is_array($data)){ return array_map(__METHOD__, $data); } else { return htmlspecialchars($data, ENT_QUOTES, 'UTF-8'); } }
CSRF対策(トークンの作成とトークンのチェック)
HTML
1<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
※上記のようにPOSTします。
//トークンの作成 function setToken(){ $bytes=openssl_random_pseudo_bytes(16); $token=bin2hex($bytes); $_SESSION['token']=$token; }
//トークンのチェック function checkToken(){ if(!(hash_equals($_SESSION['token'],$_POST['token'])) || empty($_SESSION['token'])){ exit(); } }
文字コード検証
function checkEncoding(array $data){ $result = true; foreach ($data as $key => $value) { if (is_array($value)){ $value = implode("", $value); } if (!mb_check_encoding($value)){ $result = false; break; } } return $result; }
修正すべき点や他に便利なユーザー定義関数があれば教えてください。
よろしくお願いします。
_____________________________________
以下追記。
HTML
1<input type="hidden" name="token" 2value="<?php echo htmlspecialchars($_SESSION['token'], ENT_QUOTES, 'UTF-8'); ?>">
トークン生成
function setToken(){ if(session_status() === PHP_SESSION_ACTIVE){ return; } $bytes=openssl_random_pseudo_bytes(16); $token=bin2hex($bytes); $_SESSION['token']=$token; }
トークンチェック
function checkToken(){ if(empty($_SESSION['token']) || empty($_POST['token']) || !(hash_equals($_SESSION['token'],$_POST['token']))) { exit(); } }
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/02 12:20
2017/11/02 14:05
退会済みユーザー
2017/11/02 19:50
2017/11/04 06:49
退会済みユーザー
2017/11/07 09:37
退会済みユーザー
2017/11/08 01:34