请教一个脚本语言小问题,在线等!很急!

bang22602028 2008-04-18 03:12:52
<script language="javascript">
function searchCheck()
{
var myform = document.searchForm;

if( myform.keyword.value == "" )
{alert("请填写搜索关键字!"); myform.keyword.focus(); return false;
}
if( myform.keyword.value == "<script>" ) {alert("非法字符!"); myform.keyword.focus(); return false;
}
}
</script>
这是验证一个搜索栏目输入搜索内容的脚本,当输入为空提示:请填写搜索关键字!这里没有问题
◎我现在的问题是:如何修改if( myform.keyword.value == "<script>" )修改这一句,当输入
的搜索内容中包含<script>脚本便提示非法字符,或者不执行
例如输入:<script>alert("45345")</script>
script脚本不运行或者提示非法字符,解决跨站攻击的问题!多谢各位大哥!
...全文
142 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamesfay 2008-04-18
  • 打赏
  • 举报
回复
这不可能啊,你怎么该的?居然编译都不通过
bang22602028 2008-04-18
  • 打赏
  • 举报
回复
其实可以在输出到HTML页面的时候全部用ServerUtility.HTMLEncoding,开始我我是这样改的,但是编译不了整个网站程序,我郁闷中!
bang22602028 2008-04-18
  • 打赏
  • 举报
回复
我现在发现通过输入对话筐不执行<script>alert("45345")</script>
但是,直接在浏览器上输入还是会执行:
http://www.sanxiaairport.com/index/search.aspx?keyword=>"><script>alert("45345")</script>
这是网址,不知道大家有何高见不让这个<script>运行,这是以前别人写的.net程序,修改里面的*.cs文件需要编译
我这里没有studio 2005编译的。不知道大家有没有办法通过修改*.ascx文件,解决这个问题!
txgaozhao 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 showbo 的回复:]
HTML code<input type='text' onblur="Check(this)"/>
<script type="text/javascript">
function Check(txt)
{
var reg=/<script>|<\/script>/gi
if(reg.test(txt.value))
{
alert("含有script");return false;
}
}
</script>
[/Quote]
请问
<iframe>,<frameset>及<a onload="">怎么防?
jamesfay 2008-04-18
  • 打赏
  • 举报
回复
其实可以在输出到HTML页面的时候全部用ServerUtility.HTMLEncoding,它可以把<变成<,也就是直接在页面上显示<,这样就不存在攻击的问题了

如果你这样过滤的话,你让用户怎么先是<script>呢?到时候直接HTMLEncoding一下就可以了,不用过滤
路人乙e 2008-04-18
  • 打赏
  • 举报
回复


不可能“<script>”也不让别人输入吧
一个判断完整脚本
var reg = /\<script.*?\>.*?\<\/script\>/gi;
if(reg.test(value)) return false;
bang22602028 2008-04-18
  • 打赏
  • 举报
回复
恩。多谢楼上的,先别走哈。方法可以,我在看看有没有其它毛病,多谢!
lovehongyun 2008-04-18
  • 打赏
  • 举报
回复
o_o
懒牛科技 2008-04-18
  • 打赏
  • 举报
回复
你可以给你个输入框加个验证控件!
  • 打赏
  • 举报
回复
<input type='text' onblur="Check(this)"/>
<script type="text/javascript">
function Check(txt)
{
var reg=/<script>|<\/script>/gi
if(reg.test(txt.value))
{
alert("含有script");return false;
}
}
</script>
懒牛科技 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]
把你的文本框放在
<noscript>
</noscript>
标签里就可以了。
[/Quote]

强!
bang22602028 2008-04-18
  • 打赏
  • 举报
回复
<noscript>
<tr height="25px">
<td align="center">关键字:<input type="text" name="keyword" size="20" maxlength="50" class="inputbg" value="" /><br/></td>
</tr>
</noscript>
你的意思是:具体放这里?
机器人 2008-04-18
  • 打赏
  • 举报
回复
把你的文本框放在
<noscript>
</noscript>
标签里就可以了。
mylibin 2008-04-18
  • 打赏
  • 举报
回复
你可以把非法字符存在一个数组里
然后把你输入的值循环于这个数组进行比较
如果存在非法字符就提示


最好用indexof来比较

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧