【发布时间】:2018-04-17 11:21:14
【问题描述】:
这是我正在编写的用于管理 PostgreSQL 的小 JSP servlet 的 sn-p 代码,JSP 声称该 servlet 无效。
<% if (request.getParameter("student-id") != null &&
request.getParameter("sname") != null &&
request.getParameter("date-of-birth") != null &&
request.getParameter("email") != null &&
request.getParameter("level") != null) {
String update = "UPDATE students SET name = '" + request.getParameter("sname") + "', " +
"date_of_birth = '" + request.getParameter("date-of-birth") + "', " +
"email = '" + request.getParameter("email") + "', " +
"level = '" + request.getParameter("level") + "' " +
"WHERE student_id = " request.getParameter("student-id");
statement.executeUpdate(update);
} %>
由于某种原因,这引发了我抱怨缺少分号的严重错误:
An error occurred at line: 65 in the jsp file: /students.jsp
Generated servlet error:
Syntax error, insert ";" to complete BlockStatements
第 65 行是我打开 的地方
【问题讨论】:
-
Little Bobby Tables strikes again.(竟然是一张叫“学生”的桌子!)
-
很高兴您在
"WHERE student_id = " request.getParameter("student-id");行中的错字(缺少+),因为现在您知道您有一个更大的问题可以轻松解决(见上文)。 -
安德烈斯:真的,真的确定你明白 T.J 在这里说什么。您的代码存在重大安全问题。
-
完全未经处理的输入不是要走的路,你说?!不过,感谢您指出这一点,这对整个 SQL 来说是非常新的。