如果数据不是很重要,客户端就够了。javascript不可靠,可以被禁用!
这个javascript应该是可以的。

解决方案 »

  1.   

    你为什么不把var checkOK ="`~#$%^&*-=\|/?&iexcl;&iexcl;&cent;<>:'";定义成一个数组?然后在输入框中用onkeyup事件判断,取出你刚输入的字符在for (i = 0;  i < checkStr.length;  i++)里判断如果相等就提示错误,并把错误的字符删除掉!
      

  2.   

    而且在javascript里判断和禁止这些字符的输入是绝对可靠和能做到的!就看你的判断有没有漏掉字符
      

  3.   

    to:shanxia
    可靠吗?假如客户端禁用javascript呢。
    javascript做这些判断很方便也能减轻服务器负担。
    但依靠javascript来杜绝非法字符不是很安全的说。
      

  4.   

    禁用javascript
    ie-工具-internet选项-安全-自定义级别
    下面就可以禁用javascript了
      

  5.   

    rainshow(雨扬):
      你好,照你这样说的话,要去那里禁用当然可以,我不知道你用什么写java程序,我是用servlet和jsp,要象你这样做的话,你不启动tomcat能运行servlet或jsp程序吗?那怕客户关闭tomcat你不是不用写servlet和jsp程序了?而且除了javascript外,在servlet和jsp里你还有更好的用来判断的语法吗?我写的所有项目都用了javascript,如果你这样教用户去禁用的话,那我所有系统都会运行不起来的,那写程序还有什么用?
      

  6.   

    shanxia
    我觉得你理解有偏差
    我说的客户指的是浏览网页的用户或是程序所要面对的人群,他们怎么能禁用你的tomcat?你的tomcat只能被管理人员禁用。一般用户只能看到网页界面。
    任何一个有ie浏览工具的人都可以禁用javascript,因为他们被下载到浏览者的机子上运行。
    浏览者可以选择不运行。也就是说浏览者有权不接受字符检查而提交服务器。
      

  7.   

    不太赞成rainshow(雨扬)。
    系统是给用户用的,不是给所有人用的。
    一般B/S结构的东西都要有一个特定的运行环境吧。有时严格的连客户端的浏览器版本也要有限制。
      

  8.   

    rainshow(雨扬) :
      真的不行吗?只要客户端装了系统就可以关闭tomcat,右键点击任务栏-》打开任务管理器-》点击进程-》选中javac.exe-》点击关闭进程,这时你的系统还能运行得起来吗?
    当然如果所有用户都只通过IE访问服务器上得程序又另当别论,但是就象你所说得,毕竟关闭tomcat这种情况是确实存在得,问题是:是不是所有得用户都知道通过上面那种操作去关闭tomcat?不知道我得理解对不对,:)
      

  9.   

    不必考虑禁用javascript的问题,你去掉表单里面的submit按钮,改为普通按钮,在onclick事件里面手动提交数据,如果客户禁用javascript那么就不能提交数据了。
    javascript是网页内容的一部分,如果客户不愿意运行javascript就没必要给他提供服务。
      

  10.   

    客户端不用JS有时候是难以想象的。
    什么都交给服务器处理显然不现实,
    简单的,一个按钮事件弹出一个窗口,没有JS怎么弄?
    所以要不要使用JS根本不值得讨论。
    除非IE默认是禁用JS,要不估计没有一个普通人会那么做吧,
    我是说普通用户,如果想攻击服务器的黑客除外。回楼主问题:
    使用JS的正则表达式判断,可以做到对所有输入的控制,只让输入正确的格式和字符。
      

  11.   

    to jkit
    如果人家换成直接填入地址以get形式传递给服务器呢?
      

  12.   

    楼上的。
    客户端用JS,服务器再对GET的值进行判断。
    我想一般人是不那么无聊用地址去递交的。
      

  13.   

    回复 rainshow:
    你写过servlet吗?应该知道有doGet和doPost吧,在doGet里面给错误信息即可。
      

  14.   

    假如在xfbm输入框的onkeyup事件里:
       var xfbm1=document.form1.xfbm.value;
       var checkOK ={`~,#,$,%,^,&,*,-,=,\,|,/,?,&,'};
       for(int i=0;i<=checkOK.length;i++)
       {
          if(xfbm1==checkOK[i])
          {
              window.alert("输入错误字符!");
              break;
          }
        }
    大概意思是这样,只是我没调试,可能会有些地方没注意到,你自己再想想吧
        
      

  15.   

    首先,在客户端判断很不安全,姑且不说JavaScript语言的平台兼容性,就是在IE下,想要跳过这部分也是很简单的:
    比如:服务器程序   A.jsp  =====> 客户端 A.htm
    那么 我保存A.htm  修改这个htm源文件,把其中的javascipt都删掉,然后在运行这个文件
    只要在session的存活期,你是无法进行判断的。这个就可以提交非法名字了。
    其次,服务器端的判定更好作,如果你是JSP请用一个自己写的类进行判断:正则表达式。
    其用法参见 javadoc的 java.util.regex类的用法。这样不但书写简单,而且安全性高。
    祝你好运
      

  16.   

    你可以试一下javascript中的正则表达式,找一找资料,挺简单的!
      

  17.   

    参考下面的方法,将fdbCode替换成你的禁止文字的code就可以了。
    function checkFbdStr(str) {    str = trim(str);
        if (str == null || str == "")
            return true;
        var ccode = 0;    var fbdCode =  new Array (
            34, 39, 42, 44, 60
        );
        
        for (var ii = 0; ii < str.length; ii++) {
            ccode = str.charCodeAt(ii);
            
            for (var jj = 0; jj < fbdCode.length; jj++) {
                if (ccode == fbdCode[jj]) {
                    return false;
                }
            }
        }
        return true;
    }
      

  18.   

    //'*********************************************************
    // ' Purpose: 判断输入是否含有为中文
    // ' Inputs:   String
    // ' Returns:  True, False
    //'*********************************************************
    function IsChinese(str)  
    {
    if(escape(str).indexOf("%u")!=-1)
      { 
        return true;
      }
        return false;
    }
    //'*********************************************************
      

  19.   

    回复 kinoviti(-=K.V=-):
    可以用request.getHeader("referer")来取得该请求提交之前的叶面的url,然后判一下该url包含的host信息是不是与本系统的host相同,如果不相同则说明是其他网站过来的非法连接,直接forward到登陆画面。
    你的那招就不管用了。
      

  20.   

    客户端和服务器端都应该做检查客户端检查是为了客户的方便  顺便减轻服务器的压力  
    如果你不想客户输入错了  提交  再改  在提交的话   加上javascript的判断服务器端的检查必不可少   javascript太容易绕过去了   
    你不想你的数据库被人插入不合逻辑的字段值吧
    总之呢   javascript检查可有可无   服务器端检查必须
      

  21.   

    给一个完整的HTML文件:<HTML>
    <HEAD>
    <TITLE>checkbadchar</TITLE>
    <script language="javascript">
    function checkBadChar(){
       var content = document.mainform.content;
       var badchar = ';|<>`&!*(~^)-#? :"/$=\\'+"'";
       var textchar;
       for(i = 0; i < content.value.length; i++){
              textchar = content.value.charAt(i);
              if (badchar.indexOf(textchar) >= 0){
                alert("error char!");
                content.value = "";
                return false;
              }
        }
        return true;
    }
    </script>
    </HEAD><BODY>
    <form name="mainform" onsubmit="return checkBadChar()">
        <input name="content"></input>
        <input type="submit" name="submit" value="submit" ></input>
    </form>
    </BODY>
    </HTML>比较重要的流程最好是客户端和服务器端都判断是否为空,一般页面客户端就足够了。
    毕竟黑客要想攻击你也不会用这么菜的办法的:)