asp错误:调用子程序时不能使用括号
今天在处理电子电器交易网(www.hifi168.net )的安全问题。文件上传漏洞是asp网站之痛。在处理这个问题时,动用了双层机制:
1、用户权限检查。由于后台权限是靠session来控制了,这个很容易办到。
2、来源页面检测。文件是从哪里提交上来的?能不能在本地建立一个站点,把页面POST到远程的站点呢?我不是专门做挂马工作的,没有测试过。不过为了防止这种情形,接收上传文件的页面需要做来源页面核对。这就用到了Request.ServerVariables("HTTP_Referer") 参数了。这个参数可以取得传入数据的来源页面地址。对它做判断,如果是站内提交就接受,站外提交就拒绝(本想转向一些包含病毒的网站,奈何手头没有合适的网址,就算了)。
至于上面出现的错误:
Microsoft VBScript 编译器错误 (0x800A0414)
调用子程序时不能使用括号
是在调用函数时碰到的。函数如果包含2个以上的参数,调的方式就比较烦人。原则是:有call时加括号,没有call时不用括号。但是也有例外,就是在方法中调用函数,是可以没有Call并加括号的,例如:
Response.Write(MyFunction(parameter1,parameter2))
至于说要在参数间加空格,或者有没有返回值影响函数的调用方法,参考资料如下,但我不认为是正确的!
以下网络上的参考资料,只做参考,不保证正确!
一般情况下,这种错误出现在调用的过程没有返回值的情况。应该来说,就是调用参数赋值错误。出现这种错误,使用CALL 就是可以解决的。
不返回值的过程调用不能加括号,应该这样写
treesort cat_ID,childcount
如果实在不习惯,可以在前面加Call来调用
Call treesort(cat_ID,childcount)
也就是所谓的有call时加括号,没有call时不用括号。另外,在函数名和参数间要加个空格
另:调用程序是显示调用子程序时不能使用括号 如set("ab",90) 加上call后正常