Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp表单的字段验证_Java_Javascript_Oracle_Validation_Jsp - Fatal编程技术网

Java jsp表单的字段验证

Java jsp表单的字段验证,java,javascript,oracle,validation,jsp,Java,Javascript,Oracle,Validation,Jsp,我有一个名为Description的jsp表单。此字段声明如下 <input type="text" name="description"> 此值用于组合SQL查询: 从引擎中选择“%”(字段中的值)%”之类的描述 当用户输入字母数字字符时,它工作正常,但当用户输入特殊字符时,如单引号符号:” 我的问题是: 我如何在服务器端处理这个问题 如果有必要在JavaScript上实现,那么需要过滤哪些字符 谢谢。使用参数化查询来处理此类问题。使用参数化查询来处理此类问题。您所做的被认为

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

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

此值用于组合SQL查询:

从引擎中选择“%”(字段中的值)%”之类的描述

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

我的问题是:

  • 我如何在服务器端处理这个问题
  • 如果有必要在JavaScript上实现,那么需要过滤哪些字符

  • 谢谢。

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

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

    您所做的被认为是非常糟糕的做法,可能会导致非常糟糕的事情。。。
    你所做的被认为是一种非常糟糕的做法,可能会导致非常糟糕的事情。。。

    使用准备好的语句,而不是组合SQL查询字符串。你的方式容易受到攻击

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


    不要使用javascript过滤掉特殊符号。它不会保护您免受sql注入攻击。攻击者可以伪造自己的表单而不验证javascript并攻击您的服务器。

    使用准备好的语句而不是编写SQL查询字符串。你的方式容易受到攻击

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


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

    您可以使用javascript和正则表达式通过基本验证删除无效字符:

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

    但是我同意hkutluay,参数化查询是更好的方法。

    您可以使用JavaScript和正则表达式通过基本验证删除无效字符:

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

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

    我想你说的是java中的PreparedStatement,但我不可能使用PreparedStatement,因为框架不支持它。我想你说的是java中的PreparedStatement,但是我不可能使用PreparedStatement,因为框架不支持它。最终用户可以完全控制JavaScript代码。所以绝对不要在JavaScript中进行这种转义。在服务器端使用
    PreparedStatement
    。无论你使用的框架是什么,都不支持它,责怪它的作者。这是框架中一个巨大的设计错误,因为它为SQL注入攻击敞开了大门。最终用户完全可以控制JavaScript代码。所以绝对不要在JavaScript中进行这种转义。在服务器端使用
    PreparedStatement
    。无论你使用的框架是什么,都不支持它,责怪它的作者。这在框架中是一个巨大的设计错误,因为它为SQL注入攻击敞开了大门。