Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[功能改进]: 描述 OrderItem能否支持安全模式不进行防注入的替换 #6448

Closed
3 tasks done
btown021 opened this issue Sep 2, 2024 · 5 comments
Closed
3 tasks done

Comments

@btown021
Copy link

btown021 commented Sep 2, 2024

确认

  • 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
  • 我已经在 issue 中搜索过, 确认问题没有被提出过
  • 我已经修改标题, 将标题中的 描述 替换为遇到的问题

功能改进

image

如图 OrderItem在创建时 替换了Pattern.compile("'|"|\<|\>|&|\|\+|=|#|-|;|\s|\t|\r|\n") 的内容,导致部分逻辑不能实现,我在使用反射修改 OrderItem 对象的 column 属性后代码正常运行 , 目前orderItem 除反射外无法正常跳过替换 能否加入安全模式 主动跳过该替换 如加入方法
public OrderItem setColumnSafe(String column) {
// 正常的创建逻辑 但是不替换 ‘’ “ ” 等有Sql注入问题的字符
}

参考资料

No response

@zshnb
Copy link

zshnb commented Sep 24, 2024

+1,尤其是postgresql默认会把sql中的列名变小写,如果表中的列名是大写就会很麻烦

@btown021
Copy link
Author

+1,尤其是postgresql默认把sql中的列名变小写,如果表中的列名是大写就会很麻烦

我现在是通过反射的方式解决的,OrderItem 只有创建的时候会进行替换,可以反射修改里面内容

@YonChun
Copy link

YonChun commented Sep 30, 2024

+1 刚升级了一下版本,发现了这个问题,这样确实防止了SQL注入的问题,但是我认为这个配置应该是灵活可控的

@btown021
Copy link
Author

btown021 commented Sep 30, 2024

+1刚升级了一下版本,发现了这个问题,这样确实防止了SQL注入的问题,但是我认为这个配置应该是灵活可控的

是这样的,灵活了过后可以利用Sql的函数实现更多的东西,同时调用者也会保证Sql的安全性问题。
现在还是只能通过反射去解决

@qmdx
Copy link
Member

qmdx commented Oct 17, 2024

你们可以重写(如果被 SQL 注入自行负责),如下:

page.setOrders(Arrays.asList(new OrderItem() {

          @Override
          public boolean isAsc() {
              return true;
          }

          @Override
          public String getColumn() {
              return "\"字段\"";
          }
 }));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants