免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: xfly_t
打印 上一主题 下一主题

一个perl连数据库的小问题[已解决] [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-12-28 16:41 |只看该作者
主要是我在WINDOWS注册cgi关联时打开了-T的标志(污染模式)
而我又使用了不被检查是否被污染的print,当然打印会相同.

在污染模式下所有命令行参数,环境变量,本地信息(参见perllocale),特定系统调用的结果(readdir(),readlink(),shmread()的变量,msgrcv()的返回信息,getpwxxx()调用返回的密码、gcos和shell域)和所有文件输入都被标记成污染的

解决方法
1、关了perl的污染检测
2、解除特定字符串的污染

下面是解除污染的一个例子

  1.     if ($username =~ /^([-\@\w.]+)$/) {
  2.         $username = $1;                     # 解除污染
  3.     } else {
  4.         die "Bad data in $username";
  5.     }
复制代码

   
    详细参见perlsec(1)的man帮助页

[ 本帖最后由 xfly_t 于 2006-12-28 17:01 编辑 ]

论坛徽章:
0
32 [报告]
发表于 2006-12-28 17:02 |只看该作者
啊。。。。是这个原因??!!!!!


小生受教了。

污染一节一直没怎么接触过。

论坛徽章:
0
33 [报告]
发表于 2006-12-28 18:39 |只看该作者
你注册.cgi关联时就的就是 c:/perl/bin/perl.exe 吧
我的是

  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\.cgi]
  3. [HKEY_CLASSES_ROOT\.cgi\Shell]
  4. [HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI]
  5. [HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command]
  6. @="C:\\perl\\bin\\perl.exe -T"
复制代码


-T 打了污染检测(Detecting Tainted Data)

  1. You can also enable taint mode explicitly by using the -T command line flag. This flag is strongly suggested for server programs and any program run on behalf of someone else, such as a CGI script. Once taint mode is on, it's on for the remainder of your script.
复制代码

http://webmaster.iu.edu/perl56/pod/perlsec.html

[ 本帖最后由 xfly_t 于 2006-12-28 18:41 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
34 [报告]
发表于 2006-12-29 13:06 |只看该作者
汗~
居然是这个原因。
污染模式从未用过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP