ASP里面读文本文件时,可不可以在路径里加变量?

ASP里面读文本文件时,可不可以在路径里加变量?,第1张

1("\wenzi\"&QueryString('name')&"txt");
这里不要用“\",它在jscript里面还有转义字符的作用,而且这不是相对路径的写法,改成"/";
2QueryString('name') 改成RequestQueryString("name")

CC主要是用来攻击页面的。就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。
一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据 *** 作,就是需要大量CPU时间的页面)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。
使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。
可能很多朋友还不能很好的理解,我来描述一下吧。我们假设服务器A对Searchasp的处理时间需要001S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理。有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态。
蝴蝶:我们假设服务器处理Search只用了001S,也就是10毫秒(这个速度你可以去各个有开放时间显示的论坛看看),我们使用的线程也只有120,很多服务器的丢连接时间远比60S长,我们的使用线程远比120多,可以想象可怕了吧,而且客户机只要发送了断开,连接的保持是代理做的,而且当服务器收到SQL请求,肯定会进入队列,不论连接是否已经断开,而且服务器是并发的,不是顺序执行,这样使得更多的请求进入内存请求,对服务器负担更大。
当然,CC也可以利用这里方法对FTP进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。
防范方法
说了攻击原理,大家肯定会问,那么怎么防御?使用硬件防火墙我不知道如何防范,除非你完全屏蔽页面访问,我的方法是通过页面的编写实现防御。
1 使用Cookie认证。这时候朋友说CC里面也允许Cookie,但是这里的Cookie是所有连接都使用的,所以启用IP+Cookie认证就可以了。
2 利用Session。这个判断比Cookie更加方便,不光可以IP认证,还可以防刷新模式,在页面里判断刷新,是刷新就不让它访问,没有刷新符号给它刷新符号。给些示范代码吧,Session:
<%if session(“refresh”)<> 1 then
Session(“refresh”)=session(“refresh”)+1
Responseredirect “indexasp”
End if
%>
这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,认为是刷新,可以加上一个时间参数,让多少时间允许访问,这样就限制了耗时间的页面的访问,对正常客户几乎没有什么影响。
3 通过代理发送的>做好备份 比什么都强 就不用重装了
使用sysprep使计算机自动添加入域
IT把所有部门的工作都自动化了,可是没有自动化自己的工作!
老板开始推行自动化任务,首先从使用自动程序将计算机直接添加入域,不用it去输入用户名密码。
开始研究吧。去搜索引擎上找了关键词,没有任何结果,于是考虑是否可以从计算机的注册表入手,将某些信息直接导入,虽然找出了某些相关项,想马上做个实验,但是被老板决绝了。从别的地方下手吧。
又想到他和计算机名在一起修改的,那么是否可以用api函数赖实现呢?搜索了一下函数表,只能找到修改计算机名的函数,找不到修改域的。
被逼无奈,从google得英文论坛找吧。有一些结果,但是看不懂啊(技术上,既不是编写的程序又不是应用程序),而且主要是问这个东西为什么无法加入域,没关系,顺杆爬!几个提及的词语为sysprep,什么东西啊,没接触过,查了一下中文的搜索引擎。哦!!少见多怪,原来是windowsXP的工具路径为SUPPORT\TOOLS\deploycab
好了开始查一下他的资料和使用说明把。大概研究了一下,这个东西是恢复系统安装的小程序,(没有太深入)使用它将系统的配置信息写成inf文件,然后使用参数将系统重新封装。重启系统后,系统进入安装程序,一般无需人为干预,也不用插cd。
由于,没有太多时间研究这个东西具体怎么使用,并且发挥各大作用,只是目前达到了我的要求,下面写出整体过程。
解压cab文件到一台正常的计算机上,然后使用setupmgrexe向导程序配置inf信息,主要是在加入域的表单中输入相关的用户名和密码。他一定要有权限加入域。而且最好是只有加入域的权限,不能登陆的限制,因为它的用户名与密码是明文的方式写在配置文件中。
做好之后,一个vbs文件,输出一个inf文件,可以在vbs中加入对话框要求用户输入相关信息,比如计算机名等。在制作一个bat文件,建立在c盘一个sysprep文件夹,拷贝sysprepexe和sysprepclexe文件到该文件夹内。然后启动命令c:\sysprep\sysprep -reseal -mini -nosidgen -quiet -reboot
这样便可以进行无人干预安装。最后做一个autorun的文件。这样把这些文件可到cd后用户便可以自动运行程序。
下面公布源代码(没什么技术含量)
1、autoruninf
[AutoRun]
open=Addtodomainbat
2、addotdomainbat
@echo off
echo You will join MYDOMAIN domain
pause
md c:\sysprep
copy sysprep\ c:\sysprep
addtodomainvbs
c:\sysprep\sysprep -reseal -mini -nosidgen -quiet -reboot
3、addtodomainvbs
pcname=inputbox("Please Input Your PC Name","PC Name")
if pcname="" then
msgbox "Your Full Name will be set to default!"
pcname=""
end if
fullname=inputbox("Please Input Your Full Name","PC Name")
if fullname="" then
msgbox "Your Full Name will be PC!"
fullname="PC"
end if
orgname=inputbox("Please Input Your ORG Name","PC Name")
if orgname="" then
msgbox "Your Full Name will be OK!"
orgname="OK"
end if
Const ForWriting = 2
Const create = True
Set objFSO = CreateObject("ScriptingFileSystemObject")
Set objTextFile = objFSOOpenTextFile ("c:\sysprep\sysprepinf",ForWriting,create)
strResponses = objTextFileWriteline(";SetupMgrTag")
objTextFileWriteline("[Unattended]")
objTextFileWriteline("OemSkipEula=Yes")
objTextFileWriteline("InstallFilesPath=C:\sysprep\i386")
objTextFileWriteline("TargetPath=\WINDOWS")
objTextFileWriteline("")
objTextFileWriteline("[GuiUnattended]")
objTextFileWriteline("AdminPassword=")
objTextFileWriteline("EncryptedAdminPassword=NO")
objTextFileWriteline("OEMSkipRegional=1")
objTextFileWriteline("TimeZone=210")
objTextFileWriteline("OemSkipWelcome=1")
objTextFileWriteline("")
objTextFileWriteline("[UserData]")
objTextFileWriteline("ProductKey=")
objTextFileWriteline("FullName="&fullname)
objTextFileWriteline("OrgName="&orgname)
objTextFileWriteline("ComputerName="&pcname)
objTextFileWriteline("")
objTextFileWriteline("[Identification]")
objTextFileWriteline("JoinDomain=mydomain")
objTextFileWriteline("DomainAdmin=addcomp")
objTextFileWriteline("DomainAdminPassword=111")
objTextFileWriteline("")
objTextFileWriteline("[Networking]")
objTextFileWriteline("InstallDefaultComponents=Yes")
objTextFileWriteline("")
objTextFileWriteline("[Branding]")
objTextFileWriteline("BrandIEUsingUnattended=Yes")
objTextFileWriteline("")
objTextFileWriteline("[Proxy]")
objTextFileWriteline("Proxy_Enable=0")
objTextFileWriteline("Use_Same_Proxy=0")
objTextFileClose
4、文件夹sysprep
sysprepexe和sysprepclexe
有一个小问题,好像运行之后,要求激活系统,但是不知不觉就不需要了,奇怪!我用的都是正版授权的系统。
感觉有点杀鸡用牛刀的意思了。
有机会慢慢研究一下这个东西。
其实做成ghost感觉会更好。

去看FSO吧,上面有的
这个是向指定的TXT写
<%
Set myfileobject=servercreateobject("scriptingFilesystemobject")
set mytextfile=myfileobjectcreatetextfile("E:\pccode_zzblog\pccode_zzblog\zzblog\weahtxt")
for i=1 to 10
mytextfilewriteline("写的内容")
next
mytextfileclose
%>
这个是追加
<%
Set fso = ServerCreateObject("ScriptingFileSystemObject")
path =("E:\pccode_zzblog\pccode_zzblog\zzblog\weahtxt")
set file = fsoopenTextFile(path,8, TRUE)
fileWrite("dfgdfgdg")
fileclose
set file = nothing
set fso = nothing
%>

,参考例子如下:
<html>
<head>
<title>JS *** 作文本文件</title>
</head>
<body>
<script>
var arr = 1;
function Write2Text()
{
var fso = new ActiveXObject("ScriptingFileSystemObject");
var f = fsoCreateTextFile("atxt", true);
fwrite(arr);
fClose();
}
</script>
<input type=button value="Write" onclick="Write2Text()">
<script>
function GetHeader(src) {
var ForReading=1;
var fso=new ActiveXObject("ScriptingFileSystemObject");
var f=fsoOpenTextFile(src,ForReading);
return(fReadAll());
}
function ReadText(){
var arr=GetHeader("atxt")split("\r\n");
for(var i=0;i<arrlength;i++){
alert("第"+(i+1)+"行数据为:"+arr[i]);
}
}
</script>
<input type=button value="Read" onclick="ReadText()">
</body>
</html>

我不做前端,轻喷!简单写了下你要的效果,大致上是这样:
<html>
<head>
<title>蹩脚的网页</title>
</head>
<body>
<div style="text-align:center;align:center;">
<div style="height:150px;border:1px #ccc solid;">header</div>
<div style="height:400px;">
<div style="float:left;width:150px;height:auto;">leftnav</div>
<divstyle="height:auto;">content</div>
<div style="clear:both;"></div>
</div>
<div style="height:150px;border:1px #ccc solid;">footer</div>
</div>
</body>
</html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13475396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-14
下一篇 2023-08-14

发表评论

登录后才能评论

评论列表(0条)

保存