使用JavaScript / jQuery防止SQL注入

时间:2013-02-23 06:15:02

标签: javascript jsp sql-injection

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

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

哪个易受SQL注入攻击。我搜索了一些文章,发现我可以使用预处理语句来避免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;
  }
}

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

1 个答案:

答案 0 :(得分: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();