huzpsb 发表于 2025-4-3 13:53:05

ヽ米饭 发表于 2025-4-2 22:00
你这种使用注释绕过的骚操作是在最新版本被禁止了的
PHP支持;语句,因此不妨让我们再试一试。


可以看到,假设您的插件的表名为bob,仍然可以删除其他的表。
因此,虽然我非常感谢您对提升插件安全性而做出的努力,但是在我看来,此改进仍然称不上“安全”。
如果我有任何疏漏之处,还烦请指出。

附件1:最新版的过滤器
DANGEROUS_SQL_PATTERN = Pattern.compile("^(?i)\\s*(TRUNCATE|DROP)\\s+", 2);
SQL_COMMENT_PATTERN = Pattern.compile("/\\*.*?\\*/", 34);附件2:使用的语句
DELETE FROM alice;SELECT 1 FROM bob;

ヽ米饭 发表于 2025-4-4 11:49:04

本帖最后由 ヽ米饭 于 2025-4-4 13:07 编辑

huzpsb 发表于 2025-4-3 13:53
PHP支持;语句,因此不妨让我们再试一试。





JDBC 本身不支持​​真正同时​​执行两条 SQL 语句而且mysql本身也并不支持你同时执行俩条sql!!!

你在数据库管理工具中执行是执行了俩次你可以直接编写java代码测试即可

同时我会继续努力更新更多安全补丁来应对恶意软件注入 详见
https://ricedoc.handyplus.cn/wiki/notice/

最安全的办法已经告诉你了 但是你好像忽略了

1. 使用sqlite 开启每日备份
2. 使用mysql单独一个库 开启每日备份
页: 1 [2]
查看完整版本: 知名Minecraft插件 米饭Minecraft插件被曝后门