-1

我正在使用 JSP 一段时间。我有这个选择语句:

query = "SELECT * FROM USER_PASS WHERE USERNAME = '" + name + "'";

哪个容易受到 SQL 注入的影响。查了几篇文章,发现可以使用prepared statements来避免SQL注入。我觉得更混乱。我的意见是,如果我可以找到诸如;,'--用户提供的输入之类的输入,那么我可以向他们显示一条警告消息,说明您不能在此处使用这些符号,并且我不会处理数据。这可能是我的 JavaScript 代码:

function validateSQL()
{
var x=document.forms["myForm"]["username"].value;
var pos = 0;
pos=x.indexOf("'");
if (pos!=0)
  {
  alert("Trying to hack me?");
  return false;
  }
}

哪个更好用?这有什么缺点吗?

4

1 回答 1

6

您绝对不能依赖客户端上的 JavaScript 来保护您;恶意用户可以轻松绕过任何客户端检查。您可以随时在浏览器中禁用 JavaScript。

仅仅因为某些事情令人困惑并不意味着您不应该这样做;参数化查询不会令人困惑,因此您应该练习和学习,直到您理解为止。 ; , --甚至不接近可能导致 SQL 注入的唯一符号。

我不熟悉JSP,准备查询的方法似乎很简单。

String myquery = "SELECT * FROM USER_PASS WHERE USERNAME = ?";
PreparedStatement mystatement = connection.prepareStatement(myquery);
mystatement.setString(1, name);
ResultSet myresults = mystatement.execute();
于 2013-02-23T06:24:22.990 回答