PHP安全
2021-05-31 14:03
标签:php 验证 method rand print ddr 过期 xss star PHP安全 标签:php 验证 method rand print ddr 过期 xss star 原文地址:https://www.cnblogs.com/august-fz/p/14634817.html输入数据过滤和验证
验证不改变数据,过滤会改变数据
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)));
//去生成表单
//提交
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);