布罗格的烘培机

Firefox、Opera、Safari下有的页面会出错,原因是以前的HTML数据不规范所致。

由一则函数所引起的故事

今天得知SIPO的网站被黑,发现居然和我还是有些关系的,还是先看看这则函数:

'*********************************************************
' 目的:    检查参数
' 返回:    出错则转到ShowError(3)
'*********************************************************
Function CheckParameter(byRef source,strType,default)

  On Error Resume Next

  If strType="int" Then

    '数值
    If IsEmpty(source) Then
      source=default
    ElseIf IsNumeric(source) Then
      source=CLng(source)
    ElseIf source="" Then
      source=default
    Else
      Call ShowError(3)
    End if
    If Err.Number<>0 Then Call ShowError(3)

    CheckParameter=True

  ElseIf  strType="dtm" Then

    '日期
    If IsEmpty(source) Then
      source=default
    ElseIf IsDate(source) Then
      source=CDate(source)
    ElseIf source="" Then
      source=default
    Else
      Call ShowError(3)
    End if
    If Err.Number<>0 Then Call ShowError(3)

    CheckParameter=True

  ElseIf strType="sql" Then

    'SQL
    source=CStr(Replace(source,chr(39),chr(39)&chr(39)))

  Else
    Call ShowError(0)
  End If



End Function
'*********************************************************


这则函数是取自Z-Blog的c_function.asp文件,Sipo的用法是这样的:

Call CheckParameter(Request("s_title"),"sql",1)

,不知大家发现有没有什么问题。

函数的第一个形参是标记byRef的,也就是传入引用,但Sipo放入的Request("s_title"),Request是系统组件,Request("s_title")是不能被赋值的,系统也不会报错,也就产生了SQL过滤无效的问题。

另外,函数本身也可以修改,如果不用去传值,而直接将过滤好的值做为返回值返回给变量,也就没有这个问题了,就象c_function.asp中的另一个函数FilterSQL一样,我本人是只用FilterSQL过滤的。

所以忽视了细节问题,还是会出大麻烦的。

这几天还看了点.Net的东东,什么接口、反射,委托、还有泛型等,有点头大,发现从一个极端走向另一个极端:设计过度,过于追求完美的设计模式,也未必是件好事,CommunityServer还是非常的复杂的。
  • eason :
  • 如果从用户体验的角度来说,应该是尽量使用户输入的内容得以保存,并遵循最简化的原则进行过滤,3楼的说的停止执行好象有点不太人道吧。。。。

  • 2005-11-26 , 星期六 , 10:38:59
  • 明月星光 :
  • 我比较支持停止执行,暂封IP都成,嘿嘿,让他想注入……

  • 2005-11-26 , 星期六 , 13:55:17
  • 淫听羽息 :
  • 这个还是不要太关注为好,安生措施总是赶不上反安全措施。

  • 2005-11-26 , 星期六 , 14:15:31
  • duduwolf :
  • cs你也在看啊,是不是准备给zblog升级用啊?

  • 2005-11-26 , 星期六 , 17:22:23
  • neeao :
  • 对不起,想和你说下,跟你没关系,根本不是以为这个被黑的!

  • 2005-11-28 , 星期一 , 21:31:47
  • sipo :
  • 证实一下,楼上是黑客当事人...偶的好友....

  • 2005-11-29 , 星期二 , 22:27:50
  • 淫听羽息 :
  • 原来是自己的朋友黑的啊

  • 2005-11-30 , 星期三 , 13:08:33
  • david :
  • 这样写过滤函数,还是存在一些隐患,我的做法是直接用自己的函数取代request对象,在自己的request函数中加入一个参数,设定是否允许非法字符,默认不允许,这样,在request进入的时候就做了判断,而不是等到用的时候才作判断。

  • 2005-12-01 , 星期四 , 21:41:19
  • 明月星光 :
  • 我觉得,单独过滤更适合于报错等信息,用自己的函数更好控制应该……

  • 2005-12-01 , 星期四 , 22:40:30
  • 虾饼 :
  • 和Z-BLOG完全没有关系~是SXNA自身的问题导致的

  • 2005-12-04 , 星期日 , 02:22:08
[<<] [<] [1] [2] [>] [>>]

发表评论:

­

Powered by Zdevo 1.0.3125.32067,Template by Nagrand.

­