security: fetch_forex_rates.dspy 加 localhost 校验(定时任务入口)
该端点授权给 any 且无任何鉴权,会发起外网抓取(BOC 页面)并写 exchange_rate 表, 匿名可反复触发 → 外部请求放大 + 脏数据写入 + DoS。改为仅本机可调(client_ip)。 build.sh 的 crontab 本就是 curl localhost:9090,不影响定时任务。
This commit is contained in:
parent
0a6b1dc2b2
commit
311753689a
@ -1,5 +1,15 @@
|
||||
# 获取中国银行外汇牌价并插入 exchange_rate 表
|
||||
# GET /accounting/api/fetch_forex_rates.dspy
|
||||
#
|
||||
# 安全:本端点是定时任务入口(会发起外网抓取 + 写库),只允许本机调用。
|
||||
# 之前无任何鉴权且授权给 any 角色,匿名可反复触发 → 外部抓取放大 + 脏数据写入 + DoS。
|
||||
# 判定依据 client_ip:nginx 用 $proxy_add_x_forwarded_for 追加模式、中间件取链尾值,
|
||||
# 外部伪造 X-Forwarded-For 会被追加真实 IP 到链尾,伪造不成立;且应用端口不对外开放。
|
||||
_ip = request.get('client_ip') or ''
|
||||
if _ip not in ('127.0.0.1', '::1', 'localhost'):
|
||||
return json.dumps({'success': False, 'message': '仅允许本机调用(定时任务入口)'},
|
||||
ensure_ascii=False)
|
||||
|
||||
import re
|
||||
import urllib.request
|
||||
from datetime import date
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user