【发布时间】: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 注入的好文章。我建议你也阅读它们