PHP 安全小記

一切輸入都是不可信的php

一切輸入都是不可信的html

一切輸入都是不可信的mysql

變量的處理

web 程序中全部 get post cookies update_files 來的變量都是不可信的web

  • 輸入的變量組成 mysql SQL 前都要用 mysql_real_escape_string() 處理sql

  • 輸入的變量回顯在頁面或者存入數據庫錢都要用 htmlspecialchars() 函數處數據庫

  • 對於傳入的整數或浮點數可使用 intval()floatval() 處理安全

  • 關閉 magic_quotes_runtime 安全掌握到本身的手裏 set_magic_quotes_runtime(false)cookie

數據加密

序列化 -> 加密 -> 解密 -> 反序列化函數

$userinfo = '信息'; //用戶信息
$secureKey = '密鑰'; //加密密鑰
$str = serialize($userinfo); //將用戶信息序列化
echo "用戶信息加密前:".$str;
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secureKey, $str, MCRYPT_MODE_ECB));
echo "用戶信息加密後:".$str;
//將加密後的用戶數據存儲到cookie中
setcookie('userinfo', $str); 
//當須要使用時進行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secureKey, base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密後的用戶信息:\n";
var_dump($uinfo);

密碼加密

$password = '密碼';
$salt = substr(uniqid(rand()), -6);
echo $salt . "\n";
$password = md5(md5($password).$salt);
echo $password;
相關文章
相關標籤/搜索