【问题标题】:jQuery to get value from page and pass it to HTTPServletRequest for java to usejQuery 从页面获取值并将其传递给 HTTPServletRequest 供 java 使用
【发布时间】:2018-09-13 02:05:15
【问题描述】:

我正在使用一个使用 html、Javascript 和 jQuery 构建的应用程序作为前端,并使用 Java 和 Oracle 作为后端和数据库。

目前它将数据从前端传递回 java,并在末尾附加一个 URL 参数,如 http://localhost/28182391238912398172&id=12345

然后它使用 AJAX GET 请求使用 URL 中的 id 调用 servlet,以运行准备好的语句以使用 Java 查询数据库。

我需要做的是删除 URL 中附加的参数并以另一种方式传递它,因此它不在 URL 中。本质上,我试图防止 SQL 注入的可能性,但我不确定如何将此值传回并将其保存到 HTTPServletRequest,以便我可以在后端从 Java 调用它。

我是否必须进行另一个 AJAX 调用但使用 POST 以某种方式保存它?

感谢您对此的任何想法!

【问题讨论】:

  • 使用 POST 请求,例如$.post('/28182391238912398172', { id: 12345 })。我不明白这与 SQL 注入有什么关系
  • 谢谢菲尔,我会试一试的。关于 SQL 注入,有人可能会更改参数处的请求并执行此操作。
  • 任何人都可以更改通过 HTTP 发送到您的服务器的任何参数。防止 SQL 注入发生在 DB 层,最好使用带有参数绑定的准备好的语句。您可能还对CSRF protection 感兴趣。
  • 所以你是说我可以将它作为 URL 参数保存,但如果我使用的是准备好的语句,那么 SQL 注入是不可能的?现在看 Java 代码,它不是一个,它只是 Java 代码本身中嵌入的 SQL。还要感谢 CSRF 链接,我会继续阅读。
  • OWASP 站点也有关于 SQL 注入的好文章。我建议你也阅读它们

标签: java jquery ajax


【解决方案1】:

关于sql注入,你得在服务器端关心一下,试着写出这样安全的代码:

PreparedStatement stmt = connection.prepareStatement("SELECT * FROM table WHERE id=?");
stmt.setString(1, id);
ResultSet rs = stmt.executeQuery();

【讨论】:

  • 谢谢,我正打算这样做。我只是担心 URL 参数。如果我这样做,那么如何传递 id 参数真的很重要吗? (网址与 AJAX POST)
  • 阅读stackoverflow.com/questions/46585,但是在这两种方法中你都必须关心sql注入,因为在这两种方法中攻击者都可以改变值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2014-06-21
  • 2019-09-28
  • 1970-01-01
  • 2014-08-25
  • 2017-03-27
  • 1970-01-01
相关资源
最近更新 更多