什么是CSRF
CSRF可以叫做(跨站请求伪造),咱们可以这样子理解CSRF,攻击者可以利用你的身份你的名义去发送(请求)一段恶意的请求,从而导致可以利用你的账号(名义)去--购买商品、发邮件,恶意的去消耗账户资源,导致的一些列恶意行为.CSRF可以简单分为Get型和Post型两种。
2024年08月11日
什么是CSRF
CSRF可以叫做(跨站请求伪造),咱们可以这样子理解CSRF,攻击者可以利用你的身份你的名义去发送(请求)一段恶意的请求,从而导致可以利用你的账号(名义)去--购买商品、发邮件,恶意的去消耗账户资源,导致的一些列恶意行为.CSRF可以简单分为Get型和Post型两种。
2024年08月11日
后续还有优化,目前只有大体思路
public function miaosha(){
$uid=uniqid(); //模仿用户id 随机数代替
#redis 连接
$redis =new \Redis();
$redis->connect('127.0.0.1',6379);
try{
do{
$list =[];
$key='test_key';
$value =uniqid();
$numkey ='storeid'.'11111'; //商品的Key 用来存商品数量
$redis->watch($numkey); //监听商品数量
#一个用户只能购买一个
if($redis->hget('www',$uid)){
return ['msg'=>'不能重复'];
}
//加锁
$is_lock = $redis->set($key,$value,['nx','ex'=>'10']);
if($is_lock){
$arr[$key] =$value; //记录当前获取锁的用户
$stock = $redis->get($numkey);
if($stock<=0){//商品数量为0秒杀结束,删除锁
if($redis->get($key)==$arr[$key]){
$redis->del($key);
}
return ['msg'=>'结束'];
}
#开启事务
$redis->multi();
$redis->decr($numkey);
$redis->hSet('www',$uid,'11111');
$redis->lPush('list',$uid);
$redis->exec();
#提交事务解锁
if($redis->get($key)==$arr[$key]){
$redis->del($key);
}
break;
}else{
//没有获取锁睡眠重试
usleep(5000);
}
}while(!is_lock);
return $redis->lLen('list');
}catch (\Exception $e){
$redis->discard();//redis 回滚
return $e->getMessage();
}
2024年08月11日
使用php实现下载远程图片到本地指定目录下
/**
* 获取文件的后缀名
* @param $filename
* @return false|string
*/
function getFileExtName($filename)
{
$ext = strrchr($filename,'.');
return $ext;
}
/**
*
* 下载远程图片或文件到本地
* @param $url
* @param string $path
* @return string
*/
function downloadImage($url, $path='images/')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$file = curl_exec($ch);
curl_close($ch);
return saveAsImage($url, $file, $path);
}
function saveAsImage($url, $file, $path)
{
$extName = getFileExtName($url);
//生成唯一的图片名称
$filename = uniqid().$extName;
$resource = fopen($path . $filename, 'a');
fwrite($resource, $file);
fclose($resource);
return $filename;
}
2024年08月11日
//图片url地址
$pic_url = "http://img.adbox.sina.com.cn/pic/1505759360-1398150715642.jpg";
$api_url = "http://upload.admin.mp.sina.com.cn/mpimg/index.php?show_type=json";
2024年08月11日
晚风 合天智汇
在开发网络应用时,不管是移动端的 APP 也好,还是 web 端 APP 也好,只要有用户群体存在,都绕不开身份认证这个话题,选择一种好的身份认证方法常常在应用安全中起到了至关重要的作用。目前用的最多的就是使用“token”认证用户的身份。
本文主要讲述了你不知道的关于 token 的那些事,以及在目前常见的应用中增加 token 认证的方案。
2024年08月11日
作为一个 PHPer 一直思考 PHP 怎么做高性能(个人基础比较弱),怎么微服务,之前真不知道,不是概念而是怎么落地,谈概念有用但是不落地有点扯
Swoole 没有实际项目用过,swoole 相关框架也没了解过也不知道,获取知道了可能对于之前的问题就可能有一些答案了
Hyperf 的出现简直就是太及时了,文档清晰,框架灵活等等等,简直不要太好
2024年08月11日
面试被问到了这个问题,找了答案,记录一下
假如有100W个用户,抢一张票,除了负载均衡的办法,怎么支持高并发?