如何在CGI留言板中防止别人使用HTML或JAVASCRIPT?(100分)

  • 主题发起人 主题发起人 smilboy
  • 开始时间 开始时间
S

smilboy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在CGI留言板中防止别人使用HTML或JAVASCRIPT?
 
最简单的办法: 把所有的<和>都替换成<>
 
在cAkk的基础上在完善一点,
用你的程序把<和>之间的内容全部去掉,
再在它的帖子中加入你自定的一段警告语,震慑震慑.
 
在保存数据时用replace函数将<和>容屏蔽掉。
用cakk的办法就比较好,不用去掉<和>之间的内容,这样会让大家感觉到这里不支持
html语法。
 
这样的bbs和聊天是太多了, 没有一点防范意识,
有的聊天时甚至在你用<font> 而没有 </font>
时, 改掉后面所有人的字体!
咱们的bbs 也由这个问题, 在贴子中的 程序中
包含 &lt 时, 有时会无法显示后面的内容, 各位
坛主是否可以蒋贴子过滤后在发送,确保可以正常显示?
另外, 我建议蒋发贴子, 是否发送e-mail的checkbox
的缺省值改为unchecked?, 省得我总是去改, 这简直就是
邮件炸弹!!

 
各位大哥给段程序行么?
 
hey, look at this:
>>如何在CGI留言板中防止别人使用HTML或JAVASCRIPT?
..................####...

It not "how to use", it's "how to NOT be use". :)
 
>>替换的方法加提示我觉得就很不错了。:)
 
cakk的方法可以了,不要曲调当中内容,不然,人家真的有个《》呢?
 
PERL CGI如下:
除去JS: ~ s/<script.*<//script>//gi;
除去HTML: ~ s/<([^>]|/n)*>//g;

啊,对不起, 忘了这是DELPHI论坛了, 不过DELPHI也可以参考, 用字符串函数 ... :)
 
恩,cj的建议要考虑的。不然人家就是在<>中间放的内容,你给曲调了。那就不完整
了。还是用替换的办法好
 
比如ASP中可以用SERVER.HTMLENCODE()函数来防止别人使用HTML和JAVASCRIPT,我还是觉得不太好,
请继续讨论!!
 
把所有的危险字符去掉,或改
为其他没有危险的字符就可以
了.
 
读入返回信息后,一般可做如下处理(PERL):
$value =~ s/>/>/g;
$value =~ s/</</g;
$value=~s//n/<BR>/g;
$value =~ s/<!--(.|/n)*-->//g;
$value =~ s/__/--/g;
翻译过来就是:
1、用>代替字符串中的>号,
2、用<代替字符串中的<号,
(以上两种替换不会影响<>号的显示,只是告诉浏览器不必进行解释,
这样在浏览器中仍会自动识别并还原成<>号显示)
3、用<BR>代替/n,HTML格式中<BR>就是回车.
4、删除字符串中所有以‘<!--.’或‘<!--/n’开头,以‘-->’结尾的字符串。
这中间的内容可能是改变显示风格或插入SCRIP子程序!
恶意的程序可能带来危险,所以必须去除!
5、用--代替__ 在UNIX或LINUX中__有特殊含义,为保证安全,最好换掉.
具体程序应该不用多说了.
 
对不起,我发上去的& g t 和& l t被换成了<>, < B R > 被换成回车了
应该是:
$value =~ s/>/& g t ;/g;
$value =~ s/</& l t ;/g;
$value=~s/ / n /< B R >/g;
$value =~ s/ < ! - - ( . | / n ) * - - >//g;
$value =~ s/__/--/g;
翻译过来就是:
1、用& g t 代替字符串中的>号,
2、用& l t代替字符串中的<号,
(以上两种替换不会影响<>号的显示,只是告诉浏览器不必进行解释,
这样在浏览器中仍会自动识别并还原成<>号显示)
3、用代替/ n,HTML格式中就是回车.
4、删除字符串中所有以< ! - - . 或< ! - - / n开头,- - >结尾的字符串。
这中间的内容可能是改变显示风格或插入SCRIP子程序!
恶意的程序可能带来危险,所以必须去除!
5、用--代替__ 在UNIX或LINUX中__有特殊含义,为保证安全,最好换掉.
具体程序应该不用多说了.
(为了正确显示,有些中间夹了空格)
 
接受答案了.
 
后退
顶部