四时宝库

程序员的知识宝库

Laravel中使用MinIO进行文件操作及ZIP解压

Laravel中使用MinIO进行文件操作及ZIP解压指南

介绍

如何打造一款自己的恶意样本检测工具

文章来源:台下言书

前言


每次出去做应急都能碰到各种各样的恶意软件、webshell,有的运气好能在网上遇到大神对该样本的分析文章,这样处理起来就会比较高效。运气不好网上找不到,只能自己去做分析了,比较耗时。而一个恶意软件,就拿碰到最多的挖矿系列来说,基本上都是有下载器、守护程序、释放的主程序、横向程序等多个文件,分布在系统的不同位置。还有就是webshell,找起来同样十分困难。

php 基于redis的分布式锁(php redis 分布式锁)

<?php

namespace app\api\service;

use app\api\traits\Singleton;

/**
 * 分布式锁
 * Class LockService
 * @package app\api\service
 */
class LockService extends BaseService
{
    private $lockValue;
    //有效期,5秒钟
    private $expireTime = 5;

    //使用场景
    private $scene;
    //redis连接实例
    private $redis;

    public function __construct($scene = 'kill', $expireTime = 5)
    {
        $this->scene = $scene;
        $this->expireTime = $expireTime;
        $this->redis = RedisService::getInstance()->client();
    }

    //加锁
    public function lock()
    {
        $this->lockValue = md5(uniqid());
        $result = $this->redis->set($this->scene, $this->lockValue,
            'EX', $this->expireTime,'NX');
        if(empty($result)){
            return false;
        }
        return true;
    }

    //释放锁
    public function unlock()
    {
        $script = <<<LUA
        local key=KEYS[1]
        local value=ARGV[1]
        if(redis.call('get', key) == value)
        then
            return redis.call('del', key)
        end
LUA;
        $this->redis->eval($script, 1, $this->scene, $this->lockValue);
    }

}

/*
//调用执行
$lockService = new LockService('kill');
if($lockService->lock()){
    //自行相关操作

    //释放锁
    $lockService->unlock();
}
else{
    echo "请求频繁,请稍后再操作\n";
}
*/

3分钟短文 | PHP伪随机Token生成器,实地测试,效果感人

引言

我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况。

今天我们且不说高深的“全局唯一ID”的生成方案,我们说一个简单的,如何生成一个唯一的,随机的,数组字母组成的字符串。

appId和appSecret生成算法(appid和appsecret设计)

<?php

$appId = AppUtils::getAppId();

$appSecret = AppUtils::getAppSecret();

var_dump($appId,$appSecret);

技术分享:从开发角度浅谈CSRF攻击及防御

什么是CSRF

CSRF可以叫做(跨站请求伪造),咱们可以这样子理解CSRF,攻击者可以利用你的身份你的名义去发送(请求)一段恶意的请求,从而导致可以利用你的账号(名义)去--购买商品、发邮件,恶意的去消耗账户资源,导致的一些列恶意行为.CSRF可以简单分为Get型和Post型两种。

excel导出合并单元格(excel导入合并单元格)

站点名字一样的需要合并在一起,样式图如下


1.先数据填充 后修改样式

$sheet->rows($data1);

php 利用redis分布式锁秒杀解决超卖问题

后续还有优化,目前只有大体思路

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();

    }

MQTT基础-连接demo与连接报文分析

大家好,我是yangyang.接着给大家带来mqtt基础知识第三篇:使用php连接mqtt

php-mqtt/client

获取远程链接图片并保存到本地指定目录下

使用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;
}
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接