gpt4 book ai didi

java - 包含正斜杠字符的 web jsp 表单中的 mySQL 插入问题

转载 作者:行者123 更新时间:2023-11-29 01:39:29 25 4
gpt4 key购买 nike

我有一个 jsp 表单,用户可以在其中包含以下字符串,例如:

这是对/的测试

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

description = request.getParameter("description ");
String mysqlQuery= "insert into data values (default,'" + description + "');";
int Res = St.executeUpdate(mysqlQuery);
...
}

问题来了。当我去检查 mySQL 表数据时,我看到描述列缺少/:

这是一个测试

为了解决这个问题,我尝试使用 String.replaceAll 方法,但此方法不喜欢 '/' 或 '\',编译器会出错。有没有更好的方法来解决这个问题?

最佳答案

嗯,你能试试这个吗?

preparedStatement = connection.prepareStatement("INSERT INTO data (default, description, .., ....) VALUES (?, ?, ?, ?)");
preparedStatement.setInt(1,0);
preparedStatement.setString(2, data.getDescription());
preparedStatement.setTimestamp(3, ...);
.....

preparedStatement.executeUpdate();

注意:PreparedStatement 的优点:

  • SQL语句的预编译和DB端缓存导致整体上执行速度更快并且能够重用相同的 SQL批量声明。

  • 通过内置转义自动防止SQL 注入(inject)攻击引号和其他特殊字符。请注意,这需要您使用任何 PreparedStatement setXxx() 方法来设置值

  • PreparedStatement 是防止 SQL 注入(inject)攻击的非常好的防御措施(但并非万无一失)。

谢谢。

关于java - 包含正斜杠字符的 web jsp 表单中的 mySQL 插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29714694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com