如果数据不是很重要,客户端就够了。javascript不可靠,可以被禁用!
这个javascript应该是可以的。
这个javascript应该是可以的。
解决方案 »
- 用EXT的editorgridpanel,如何让某一行的某一列为不可编辑呢?
- struts框架Servlet action is not available
- apache和tomcat整合后下载文件取消造成CPU占用超高的问题
- struts学习第一天,请教关于开发环境的问题
- 关于myeclipse 连接oracle数据库的问题(难)
- 请高手帮忙 英文操作系统下 tomcat的中文问题(一定给分)
- jfreechart柱形图显示问题求助 折腾二天了,附图!
- jsp连接mysql数据库的问题。
- 大家的WEB方式打印都是用什么来实现的
- JSP中如何获得xmlhttp所send的变量
- ***急急急!!!把时间插入数据库的问题
- 一个简单的基本问题,我概念不清楚,想问问大家?
可靠吗?假如客户端禁用javascript呢。
javascript做这些判断很方便也能减轻服务器负担。
但依靠javascript来杜绝非法字符不是很安全的说。
ie-工具-internet选项-安全-自定义级别
下面就可以禁用javascript了
你好,照你这样说的话,要去那里禁用当然可以,我不知道你用什么写java程序,我是用servlet和jsp,要象你这样做的话,你不启动tomcat能运行servlet或jsp程序吗?那怕客户关闭tomcat你不是不用写servlet和jsp程序了?而且除了javascript外,在servlet和jsp里你还有更好的用来判断的语法吗?我写的所有项目都用了javascript,如果你这样教用户去禁用的话,那我所有系统都会运行不起来的,那写程序还有什么用?
我觉得你理解有偏差
我说的客户指的是浏览网页的用户或是程序所要面对的人群,他们怎么能禁用你的tomcat?你的tomcat只能被管理人员禁用。一般用户只能看到网页界面。
任何一个有ie浏览工具的人都可以禁用javascript,因为他们被下载到浏览者的机子上运行。
浏览者可以选择不运行。也就是说浏览者有权不接受字符检查而提交服务器。
系统是给用户用的,不是给所有人用的。
一般B/S结构的东西都要有一个特定的运行环境吧。有时严格的连客户端的浏览器版本也要有限制。
真的不行吗?只要客户端装了系统就可以关闭tomcat,右键点击任务栏-》打开任务管理器-》点击进程-》选中javac.exe-》点击关闭进程,这时你的系统还能运行得起来吗?
当然如果所有用户都只通过IE访问服务器上得程序又另当别论,但是就象你所说得,毕竟关闭tomcat这种情况是确实存在得,问题是:是不是所有得用户都知道通过上面那种操作去关闭tomcat?不知道我得理解对不对,:)
javascript是网页内容的一部分,如果客户不愿意运行javascript就没必要给他提供服务。
什么都交给服务器处理显然不现实,
简单的,一个按钮事件弹出一个窗口,没有JS怎么弄?
所以要不要使用JS根本不值得讨论。
除非IE默认是禁用JS,要不估计没有一个普通人会那么做吧,
我是说普通用户,如果想攻击服务器的黑客除外。回楼主问题:
使用JS的正则表达式判断,可以做到对所有输入的控制,只让输入正确的格式和字符。
如果人家换成直接填入地址以get形式传递给服务器呢?
客户端用JS,服务器再对GET的值进行判断。
我想一般人是不那么无聊用地址去递交的。
你写过servlet吗?应该知道有doGet和doPost吧,在doGet里面给错误信息即可。
var xfbm1=document.form1.xfbm.value;
var checkOK ={`~,#,$,%,^,&,*,-,=,\,|,/,?,&,'};
for(int i=0;i<=checkOK.length;i++)
{
if(xfbm1==checkOK[i])
{
window.alert("输入错误字符!");
break;
}
}
大概意思是这样,只是我没调试,可能会有些地方没注意到,你自己再想想吧
比如:服务器程序 A.jsp =====> 客户端 A.htm
那么 我保存A.htm 修改这个htm源文件,把其中的javascipt都删掉,然后在运行这个文件
只要在session的存活期,你是无法进行判断的。这个就可以提交非法名字了。
其次,服务器端的判定更好作,如果你是JSP请用一个自己写的类进行判断:正则表达式。
其用法参见 javadoc的 java.util.regex类的用法。这样不但书写简单,而且安全性高。
祝你好运
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;
}
// ' Purpose: 判断输入是否含有为中文
// ' Inputs: String
// ' Returns: True, False
//'*********************************************************
function IsChinese(str)
{
if(escape(str).indexOf("%u")!=-1)
{
return true;
}
return false;
}
//'*********************************************************
可以用request.getHeader("referer")来取得该请求提交之前的叶面的url,然后判一下该url包含的host信息是不是与本系统的host相同,如果不相同则说明是其他网站过来的非法连接,直接forward到登陆画面。
你的那招就不管用了。
如果你不想客户输入错了 提交 再改 在提交的话 加上javascript的判断服务器端的检查必不可少 javascript太容易绕过去了
你不想你的数据库被人插入不合逻辑的字段值吧
总之呢 javascript检查可有可无 服务器端检查必须
<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>比较重要的流程最好是客户端和服务器端都判断是否为空,一般页面客户端就足够了。
毕竟黑客要想攻击你也不会用这么菜的办法的:)