本文主要是介绍PHP安全,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
输入数据过滤和验证
验证不改变数据,过滤会改变数据
session安全处理
1. 如果存储在cookie中的phpsessid被跨站脚本攻击(XSS)获取了,要尽可能缩短原有的会话id的有效时间
session_starrt();
session_regenerate_id(); //重新生成会话id,使旧的过期
2. 注销操作
session_unset();
session_destroy();
setcookie('PHPSESSID', 0, time()-3600);
3. 为浏览者创建指纹。
$footprint = md5($_SERVER['REMOTE_ADDR']
.$_SERVER['HTTP_USER_AGENT']
.$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$printMatch = !file_exists(PRINT_DIR . $footprint);
if ($_SESSION['loggedId'] && !$printMatch) {
//登录过期。。。
}
使用令牌防止表单重复提交
session_start();
$_SESSION['token'] = $token = urlencode(base64_endode(random_bytes(20)));
//去生成表单
<input type="hidden" name="token" value="<?= $token?>" >
//提交
if ($_POST['token'] != $_SESSION['token']) {
//token不匹配
}
使用更为安全的加密算法
mcrypt以来的类库已经被废弃了,可以使用openssl*相关函数
openssl_get_cipher_methods() # 查看支持的算法
加密
$text = 'some text';
$method = 'aes-256-xts';
$key = random_bytes(16);
$iv = random_bytes(16);
$cipherText = base64_encode(openssl_encrypt($text, $method, $key, 0, $iv));
解密
$word = openssl_decrypt(base64_decode($cipherText), $method, $key, 0, $iv);
这篇关于PHP安全的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!