物联网服务遇到「重放攻击」的应对措施

最近整理文档,发现之前共享充电宝项目物联网服务记录了接入某厂家设备遇到的问题,里面提到了「重放攻击」。对接过程中发生了很多事,有些事已经分析解决了,有些问题依然还存在。xx 需要 http 80 端口通讯(5 个 http 借口),而业务端下发指令的请求也是到网关服务,使用的也是 80 端口。之前 xx 就出现过网关的 80 端口受到 重放攻击(Replay Attacks),这攻击主要是捕捉历史

PHP 项目退款报错:订单金额或退款金额与之前请求不一致,请核实后再试

客服反馈操作订单退款失败,用户的消费记录显示,该订单并没有用余额扣款。这排除了因为实际支付金额与订单金额不一致导致的退款失败情况。根据订单号查询日志,发现了这个报错 订单金额或退款金额与之前请求不一致,请核实后再试。{ "success": false, "error_message": "wechat pay refund fai

php curl 偶发性返回 null

项目反馈存用户归还后平台订单待支付,但用户一直收到微信充电宝使用时长的提醒。进一步确认是微信信用单没有转支付,还处于进行中的状态。一开始不确定问题,还让服务商跟微信确认了一下,转支付的请求没有到达微信。代码中使用了自定义的基于 cURL 的 http 请求,一开始认为是请求遇到网络阻塞,导致请求超时,于是设置了连接超时时间和 cURL 超时时间为 10s。一般请求在 1s 左右会正常返回,超过 1

在 Mac 上使用 cron 服务来实现 Laravel 项目任务调度

在查看 Laravel 任务调度文档 本地运行调度程序 时,发现 Laravel 框架提供了一个任务调度运行指令:该命令将在前台运行,并每分钟调用一次调度程序,直到你终止该命令为止# 项目目录下执行 ~ php artisan schedule:work INFO Running scheduled tasks every minute. 2023-10-20 16:06:00 Ru

Mac 下 iTerm 执行 Laravel 安装指令报错:zsh: no matches found: 9.*

Laravel 安装指令:composer create-project --prefer-dist laravel/laravel 项目名称 9.*如果去掉版本号,是可以正常安装的。提示中有 zsh,猜测是这个脚本的问题。百度到修复方案:在终端(terminal 或 iTerm)中输入 vim ~/.zshrc在 vim 中末尾输入 setopt no_nomatch 后 按 esc 键 然后输

Laravel 向公共模板中添加公共变量

使用场景如自定义的 header 中需要做 SEO 相关的标题,关键词、描述,导航内容,底栏 footer 公司信息、联系方式等。这些信息内容因为属于公共部分,被拆分成 header、footer 等公共模板,如果不需要修改还好,如果想要在后台定义修改,则需要对这些公共模板携带对应数据。使用方法因为数据只传递一次在所有页面都可用,所以,只要在调用 view 页面模版时带入数据,即可直接使用。当然可

Laravel 5.2 修改或者关闭 update_at 和 created_at

Laravel(Ler-eh-vel) 默认是需要在创建表的时候包含 created_at(创建时间)和 updated_at(更新时间)的,当然,可以通过增加 public $timestamps = false; 取消模型被戳记时间,即不需要这两个表字段。遇到一种记录表,并不需要更新时间字段。网上找到 laravel7 修改或者关闭 update_at 和 created_at,提到可以重写

Mac 下安装多个 PHP 版本再运行低版本 PHP 报错:'/usr/local/opt/icu4c/lib/libicuio.72.dylib' (no such file)

因为维护多个新老项目,对于 PHP 多版本有需要。所以按照 Mac 下使用 brew 安装 php7 版本并切换 分别安装了 php71、php80、php81,还有默认的 php(php82)。最近需要使用到 laravel artisan 指令生成任务类,php71 artisan make:job xxx,发现 php71 执行报错了,然后试了其他的几个版本,除了最新的 php(php82)