阿里云OSS安装包防盗刷
为防止资源包被盗刷,故通过程序控制下载频次。
·
为防止资源包被盗刷,故通过程序控制下载频次
function down(){
try {
$ip=request()->ip();
if(!$ip){
echo "<script>alert('当前网络异常!');setTimeout(()=>{window.history.back();},3000);</script>";
exit;
}
Cache::store('redis')->set('ossAppIpDownInfo:'.$ip.":".date("YmdHis"), $system, 3600);
$accessKeyId = 'LTAxxxxxxxxxxxxxxxxxx';
$accessKeySecret = 'suxxxxxxxxxxxxxxxxxxxxxxxx';
$endpoint = 'oss-cn-hangzhou.aliyuncs.com';
$bucket = 'down';
$stsArr = Cache::store('redis')->get('ossDownSts');
if(!isset($stsArr['AccessKeyId'])){
$sts = new StsServer([
'AccessKeyID' => $accessKeyId,
'AccessKeySecret' => $accessKeySecret,
'RoleArn' => 'acs:ram::8888888888888888:role/down',
'BucketName' => $bucket,
'Endpoint' => $endpoint,
'RegionId' => 'cn-hangzhou',
'RoleSessionName' => 'external-username',
'TokenExpireTime' => 900, // sts超时秒
]);
$rts = $sts->getOssDownSts();
if (isset($rts['StatusCode']) && $rts['StatusCode']==200 && $rts['AccessKeyId'] && $rts['AccessKeySecret'] && $rts['SecurityToken']) {
$stsArr=[
'AccessKeyId'=>$rts['AccessKeyId'],
'AccessKeySecret'=>$rts['AccessKeySecret'],
'SecurityToken'=>$rts['SecurityToken']];
Cache::store('redis')->set('ossDownSts',$stsArr,898);
}else{
echo "<script>alert('下载失败!');setTimeout(()=>{window.history.back();},3000);</script>";
return '';
}
}
$num=Cache::store('redis')->get('ossAppIpDownNum:'.$ip);
$num=$num??0;
$options = array(
"response-content-disposition"=>"attachment",
);
//限速规则,随时调整
if($num==1) {
$options[OssClient::OSS_TRAFFIC_LIMIT]=81920000;//10M
}else if($num==2){
$options[OssClient::OSS_TRAFFIC_LIMIT]=40960000;//5M
}else if($num>2 && $num<5){
$options[OssClient::OSS_TRAFFIC_LIMIT]=8192000;//1M
}else if($num>=5 && $num<10){
$options[OssClient::OSS_TRAFFIC_LIMIT]=819200;//100KB
}else if($num>=10){
echo "<script>alert('下载失败!');setTimeout(()=>{window.history.back();},3000);</script>";
}
$num+=1;
$ossClient = new OssClient($stsArr['AccessKeyId'], $stsArr['AccessKeySecret'], 'https://'.$endpoint,true,$stsArr['SecurityToken']);
$signedUrl = $ossClient->signUrl($bucket, 'myApp.apk', 3,'GET',$options);
$signedUrl = str_replace('https://'.$endpoint,'https://down.xxx.com',$signedUrl);
Cache::store('redis')->set('ossAppIpDownNum:'.$ip, $num, 43200);
header("Location:" . $signedUrl);
} catch (Exception $e) {
echo "<script>alert('下载失败!');setTimeout(()=>{window.history.back();},3000);</script>";
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)