PHP安全

2021/4/8 22:26:15

本文主要是介绍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安全的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程