你这种使用注释绕过的骚操作是在最新版本被禁止了的
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 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]