首页
关于
Search
1
Fastadmin 美化后台样式
310,891 阅读
2
关于破解移动宽带光猫 型号: GS3101 超级管理员密码
26,918 阅读
3
给Thinkphp3用上composer
19,964 阅读
4
Wallpaper完美壁纸修复天气bug(无需申请API)
19,748 阅读
5
PECL无法安装时手动编译安装PHP扩展
19,606 阅读
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
登录
Search
标签搜索
php
git
Windows
wkhtmltopdf
短信
defense
API
Google Photos
python
wkhtmltoimage
网页快照
linux
ssr
https
mail
sms
小程序
封装
ComoBox
拼多多
Guooo
累计撰写
126
篇文章
累计收到
81
条评论
首页
栏目
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
页面
关于
搜索到
2
篇与
的结果
2019-01-14
互亿短信调用模板 php
调用方法//调用方法 $code = mt_rand(1000, 9999); $sms = new Huyisms(); // 发送验证码 $result = $sms->mobile($mobile)->code($code)->send(); // 或者自定义短信内容 // $result = $sms->mobile($mobile)->content('恭喜您的材料已经审核成功,请及时查看。')->send(); if ($result === TRUE){ //短信验证码发送成功 }else{ //短信验证码发送失败 echo $sms->getError(); } 把短信扩展保存成php文件,修改其中的配置信息即可<?php /** * 互忆短信发送 * Class Huyisms * @package admin\huyisms\library */ class Huyisms { private $config = []; private $_params = []; public $error = ''; public function __construct($options = []) { $config = [ 'huyi_appid' => '', // todo 修改为你的 APPID 'huyi_appsecret' => '', // todo 修改为你的 APPSECRET 'huyi_temp' => '您的短信验证码为{$code},请勿向任何人提供此验证码。' // 默认短信验证码模板,不用备案,可以不修改 ]; $this->config = array_merge($config, is_array($options) ? $options : []); } /** * 发送短信方法 */ public function send() { $this->error = ''; $params = $this->_params(); $send_url = 'http://106.ihuyi.cn/webservice/sms.php?method=Submit&'; $response = $this->_curl($send_url,$params); if ($response !== FALSE){ $res = (array) json_decode($response,true); if (isset($res['code'])){ if ( $res['code'] == 2){ return TRUE; } } $this->error = isset($res['msg']) ? $res['msg'] : 'InvalidResultMsg'; }else{ $this->error = 'InvalidResult'; } return FALSE; } /** * 获取剩余短信条数 * @return mixed|string */ public function getNum() { $this->error = ''; $params = $this->_params(); $get_url = 'http://106.ihuyi.com/webservice/sms.php?method=GetNum&'; $response = $this->_curl($get_url,$params); if ($response !== FALSE){ $res = (array) json_decode($response,true); if (isset($res['code']) && $res['code'] == 2){ return $res['num']; } return $res['msg']; } return ''; } /** * 接收验证码值,不能和content同时使用 * @param string $code * @return $this */ public function code($code = '') { $content = str_replace('{$code}',$code,$this->config['huyi_temp']); $this->_params['content'] = $content; return $this; } /** * 接收短信内容 * @param string $content * @return $this */ public function content($content = '') { $this->_params['content'] = $content; return $this; } /** * 设置参数 * @param array $param * @return Huyisms */ public function param(array $param = []) { foreach ($param as $k => &$v) { $v = (string) $v; } unset($v); return $this; } /** * 接收手机 * @param string $mobile 手机号码 * @return Huyisms */ public function mobile($mobile = '') { $this->_params['mobile'] = $mobile; return $this; } /** * 返回错误信息 * @return string */ public function getError() { return $this->error; } private function _params() { return array_merge([ 'account' => $this->config['huyi_appid'], 'password' => $this->config['huyi_appsecret'], 'time' => time(), 'format' => 'json' ],$this->_params); } //请求数据到短信接口,检查环境是否 开启 curl init。 private function _curl($url,$params) { $uri = $url . http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_URL, $uri); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $reponse = curl_exec($ch); curl_close($ch); return $reponse; } }
2019年01月14日
3,088 阅读
0 评论
0 点赞
2018-08-06
短信接口防刷保护
之前遇到客户得罪人,被人恶意攻击,批量刷项目的短信接口,导致一天内被刷了上千条短信。当时项目已有的防刷机制只大概包括:验证手机号格式检测该手机号请求频率,最高一分钟一次,一天最多发送三次检测IP的请求频率,一小时内最多请求五次但是这种情况下还是被一天刷了上千条。后台看了下请求记录,发现攻击者使用了高匿代理轮询请求服务器,就是相当于模拟不同用户的手机号和不同IP发送请求,这让我们很难判断来请求的究竟是真实用户还是机器人。但是我从记录发现了一点:对方是直接攻击的API接口这样一来就有了个初步的解决办法:让程序在请求短信接口前 先从服务器获取一个特征码,然后在请求短信接口的时候把这个特征码和手机号一起发送到接口,服务器再根据这个特征码验证是否成功。最直接的方法就是生成一个随机码存到Session中,然后前端请求短信接口时服务器判断Session中的随机码和前端请求时发送过来的随机码是否相同,为空或者不同则验证不通过但是这样一来也有个问题,当攻击者不了解请求流程还好,如果攻击者理解了参数含义,还是能直接拿到特征码再提交过来,同样防止不了刷短信的问题。于是又衍生出了另一种解决方案:图形验证码像网易等大厂注册时也是采用了这种方法服务器先生成图形验证码返回到前端,在请求短信接口前先验证图形验证码,然后再决定是否发送短信这种方法生成的图形验证码一般机器人识别起来有一定难度,虽然同样有被破解的可能(AI训练和打码平台),但是也无形中增加了攻击者的攻击成本,能大大减少被攻击的概率。只不过这种方式在手机端相对于用户体验可能不是很好,不过安全至上,也无伤大雅吧
2018年08月06日
4,598 阅读
0 评论
0 点赞