youpaishidifu aaf5fe48c6 加固-07(P0-06): 封堵 SQL 注入面(动态列名白名单 + 裸拼值强类型化)
背景:多处 SQL 由用户输入拼接——update() 的动态键(mod)直接作列名入 SET 子句;
卡密/分类卡密批量 INSERT 手拼 SQL 值元组(insert_back_row 零转义);DelUse 删除
语句手拼 fid。列名注入与手拼值注入均可被利用篡改/破坏数据。

1. 列名注入(动态 mod 键):
   - function/function_core.php 新增 wq_is_db_field($name):仅允许 [A-Za-z0-9_]{1,64}
     合法 SQL 标识符,杜绝引号/空格/注释符进入列名
   - admin/ajax.php 四处 change* 动态更新加守卫(非法 mod 直接 die「不支持修改的字段」):
     * changegrade (sq_level)
     * changeuser  (sq_user)
     * changefid   (sq_fidlist)
     * changeagent (sq_agent)
   - 注:agent 侧 changeuser/changeagent 已有字段白名单(P0-05 已加 password 哈希),无需重复

2. 手拼 INSERT 值元组(creatkey / creatfidkey,admin+agent 双侧):
   - 卡密金额 sc_money:强制 is_numeric(),非法直接拒绝(money 会裸拼进 INSERT 与卡密串)
   - 分类 fid sc_fid:强制 (int) 整型化后再拼入(防多语句/注释符逃逸)

3. DelUse 删除语句(admin+agent 双侧):
   - fid 强制 (int) 整型化;agent 侧 aid 亦 (int) 化
   - 注入载荷如 "1 AND 1=1" 被截为 1,SQL 结构不再可被改写

回归(30 项全 PASS,8082 内置服务器):
- 各 change* 正常字段修改成功且 DB 生效;列名注入(price,x / 多语句 DROP 载荷)全部被拒,目标表完好
- creatkey 正常生成、余额正确扣除;money 注入载荷被 is_numeric 拒绝
- creatfidkey 合法 fid 正常生成;注入 fid 在 fid 查找即被拒(int 化后无命中)
- DelUse 注入 fid 被 int 化后正常执行(删 0 行),表结构完好
- 注:(int)"1; DROP..."=1(前导数字保留),(int)"'; DROP..."=0,载荷均无法逃逸 SQL 结构
2026-10-10 12:41:33 +08:00
2019-12-09 10:23:56 +08:00
2019-12-09 10:23:56 +08:00
2019-12-09 10:23:56 +08:00
2019-12-09 10:23:56 +08:00
2019-12-10 23:49:08 +08:00
2024-08-09 14:22:16 +08:00
2024-08-09 14:13:52 +08:00

温泉PHP网络授权系统Beta

警告:原作者已不再更新程序,可能会存在安全漏洞、未知BUG,请谨慎使用;本项目由开源社区中的诸位自行维护。

许可协议

本程序仅供软件授权、学习研究、技术交流使用,严禁用于包括但不限于色情、赌博、诈骗等违反中华人民共和国相关法律法规或违反使用者所在地法律法规;本作者不再提供任何技术支持、出售、贩卖。 严禁将本程序二次开发后进行出售,请共同维护一个良好的开源环境。 您可以任意修改本程序,但您所做的修改必须通过 Pull Requests 提交到本仓库。

安装说明:

1.导入文件 “wenquan_auth.sql” 到您的数据库中 *** 导入完成后请务必删除数据库文件 ***

2.修改配置文件 “function/config.inc.php” 文件中的信息为您的数据库信息

3.通过执行以下SQL语句新增管理员(请自行将各项参数替换):

INSERT INTO sq_admin (ID, username, password, loginip, logintime, qq, lastaccesstime, accesstoken) VALUES (NULL, '您的用户名', MD5('您的密码'), '', unix_timestamp(now()) , '您的QQ', unix_timestamp(now()), '这里写64位随机字符');

上方执行示例:

INSERT INTO sq_admin (ID, username, password, loginip, logintime, qq, lastaccesstime, accesstoken) VALUES (NULL, '温泉', MD5('123456789'), '', unix_timestamp(now()) , '80071319', unix_timestamp(now()), 'JjYBHCBSNeuoNnkTVRCf5EENhZWDcolJOh7MQlmV9pn4S4p4SZFHJaSH75MBK3OZ');

以上语句表示新增一个管理员,用户名为【温泉】,密码为【123456789】,管理员QQ为【80071319】。

关于随机字符生成可使用:https://suijimimashengcheng.51240.com/

S
Description
No description provided
Readme AGPL-3.0
4.6 MiB
Languages
JavaScript 54.3%
PHP 17.9%
CSS 14.1%
HTML 10.4%
eC 3.3%