jsp表单的字段验证

时间:2012-04-26 12:54:04

标签: java javascript oracle validation jsp

我有一个名为Description的字段的jsp表单。该字段声明如下

<input type="text" name="description">

此值用于组成SQL查询:

  

从引擎中选择*,其中描述如'%(来自字段的值)%'

当用户输入字母数字字符时,它可以正常工作,但当用户输入特殊字符时失败,例如单引号符号:'

我的问题:

  1. 我如何在服务器端处理此问题
  2. 如果有必要在JavaScript上实现,那么必须过滤掉哪些字符?
  3. 谢谢。

4 个答案:

答案 0 :(得分:3)

使用预准备语句而不是编写SQL查询字符串。你的方式易受SQL Injection attack的影响。

如果无法使用PreparedStatements,则在将此字段值传递给SQL查询之前,请使用java正则表达式删除特殊字符。

a post related to this task

请勿使用javascript过滤掉特殊符号。它不会保护你免受sql注入攻击。攻击者可以在没有验证javascript的情况下伪造自己的表单并攻击您的服务器。

答案 1 :(得分:1)

使用参数化查询来处理这类问题。

答案 2 :(得分:0)

你所做的事情被认为是一种非常糟糕的做法,可能导致非常糟糕的事情...... http://en.wikipedia.org/wiki/SQL_injection

答案 3 :(得分:0)

您可以使用JavaScript和Regex通过基本验证删除无效字符:

<script type="text/javascript">
var str= document.getElementById('mySearch').value;
str=str.replace(/[^A-Za-z0-9]/g,'');
alert(str);
</script>

但我同意hkutluay,参数化查询将是更好的途径。