|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;控件使用ASP改善文档上载控件
跟着互联网的开展,人们公布和猎取信息的体例产生了基本的变更,愈来愈多的人入手下手把收集作为最主要的公布和猎取信息的路子,同时,能公布并令信息共享的手艺也愈来愈多。固然这些手艺为开辟职员带来了极年夜的便当,可是因为各种缘故原由,个中有些手艺还存在着如许或那样的缺点。因而,开辟职员在选择和利用各类手艺时,必定要认清这些手艺的长处和范围性,扬长避短,才干计划出功效完美的程序。
提出成绩
笔者曾在建立企业外部信息网工程中开辟过基于Web的文档资本共享信息网站。该网站请求上载的文档能主动在主页中依据文档的种别按文档题目毗连到对应的栏目里。针对这类需求,笔者使用IIS的文档上载控件PostingAcceptorComponents,分离数据库和Web手艺,开辟出了一套主动化水平很高的文档主动网页公布体系和文档主动网页天生体系。在开辟该体系的过程当中,笔者发明IIS下的上载控件cpshost.dll在利用中存在必定的成绩。比方,为完成上载,笔者开辟了两个程序:程序一(Upload.asp)供应基于Web的信息文档上载录进界面;程序二(wd_writer.asp)把程序一录进的信息纪录到数据库中。个中相干代码以下:
程序一(upload.asp):
……
’供应文档上载的客户界面
<formenctype=“multipart/form-data”action=“http://<%=Request.ServerVariables
(“SERVER_NAME”)%>/scripts/cpshost.dll?PUBLISH?wd_writer.asp”method=“post”>
<p>文档主题:<inputtype=“text”name=“subject”><br>
作者:<inputname=“author”type=“text”><br>
公布工夫:<inputname=“date1”type=“text”><br>
上载文档名(点击扫瞄按钮可举行选择):<inputtype=“file”name=“filename”>
DestinationURL:<inputtype=“hidden”name=“TargetURL”
value=“http://<%=Request.ServerVariables(“SERVER_NAME”)%>/users/wdls”>
<inputtype=“submit”value=“公布断定”></p>
</form>
……
程序二(wd_writer.asp):
<%翻开数据库
Setmydata=Server.CreateObject
(“ADODB.Connection”)
mydata.Open“DSN=xczh;UID=sa;PWD=;”
从表单中掏出各项内容
date1=Request.form(“date1”)取工夫
取文档主题
subject=Request.form(“subject”)
取作者
author=Request.form(“subject”)
取文档文件名
filename=Request.form(“filename”)
取文档在Web服务器中寄存的物理地点
TargetURL=Request.form(“filename”)
写数据库
sqlstr=“insertintowdlsbvalues(”&sn&“,‘”&subject&“,‘”&date1&“,‘”&filename&“,‘”&TargetURL&“,‘”&author&“)”
Mydata.Execute(sqlstr)
%>
上述程序的语法布局和逻辑布局都准确无误,但在利用时却呈现了成绩。当在程序一中表单的subject、Author、filename域中填写汉字后,在程序二顶用Request掏出的表单域值为乱码,即不克不及准确从表单中掏出域值。此时,表单举行POST哀求服务时的域值的封装形式(enctype)为“multipart/form-data”,即RFC1867。因而笔者把程序一举行POST哀求服务时的封装形式修正为“text”,但却呈现了“没法上载文档”的毛病。笔者剖析后发明,文档上载控件cpshost.dll只能在表单的“multipart/form-data”封装形式(既RFC1867格局)下才干在扫瞄器与服务器之间举行文档上载。
办理成绩
笔者接纳改动操纵流程的办法,办理了上述成绩。起首,由用户填写表单(程序三Upload.asp),并提交给程序四(wd_read.asp)举行预处置。在程序四中使用session工具临时保留subject、author、date1、filename、targetUrl等表单域的输出值。向用户输入一个确认页面,由用户再次确认表单。然后,设置表单的封装形式为“multipart/form-data”,并举行上载操纵。最初,由cpshost.dll挪用程序五(wd_writer.asp)。由程序五掏出存储于内建工具session中的域值,举行数据库操纵和操纵确认。假如程序四呈现不成展望的毛病,则文档上载失利,不会挪用程序五,因而坚持了数据库的完全性。相干代码以下:
程序三(upload.asp):
<formaction=“http://<%=Request.
ServerVariables(“SERVER_NAME”)>/wd_read.asp”method=“post">
<p>文档主题:<inputtype=“text”name=“subject”><br>
作者:<inputname=“author”type=“text”><br>
公布工夫:<inputname=“date1”type=“text”><br>
上载文档名(点击扫瞄按钮可举行选择):<inputtype=“file”name=“filename”>
DestinationURL:<inputtype=“hidden”name=“TargetURL”value=“http://<%=Request
.ServerVariables(“SERVER_NAME”)%>/users/<%=Request.ServerVariables(“LOGON_USER”)%>”size=“20”><br>
<inputtype=“submit”value=“公布断定”></p>
</form>
程序四(wd-read.asp):
<%掏出程序三中的表单域值并保留在session中
session(“subject”)=Request.form(“subject”)
session(“date1”)=Request.form(“date1”)
session(“author”)=Request.form(“author”)
session(“filename”)=Request.form(“filename”)
session(“TargetURL”)=Request.form(“TargetURL”)
%>
……
<formenctype=“multipart/form-data”action=
“http://<%=Request.ServerVariables
(“SERVER_NAME”)%>/scripts/cpshost.dll?PUBLISH?wd_writer.asp”method=“post”>
上载文件名(点击扫瞄按钮可举行选择):<inputtype=“file”name=“filename”value=“<%=session(“filename”)%>”>
<inputtype=“hidden”name=“TargetURL”
value=“http://<%=Request.ServerVariables(“SERVER_NAME”)%>/users/wdls”>
<inputtype=“submit”value=“公布断定”></p>
</form>
程序五(wd_writer.asp):
<%翻开数据库
Setmydata=Server.CreateObject
(“ADODB.Connection”)
mydata.Open“DSN=xczh;UID=sa;PWD=;”
’取各表单域的值
date1=session(“date1”)取工夫
subject=session(“subject”)取文档主题
author=session(“subject”)取作者
filename=session(“filename”)取文档名
取文档在Web服务器中寄存的物理地点
TargetURL=session(“TargetURL”)
写数据库,保留文档纪录
sqlstr=“insertintowdlsbvalues(”&sn&“,‘”&subject&“,‘”&date1&“,‘”&filename&“,‘”&TargetURL&“,‘”&author&“)”
Mydata.Execute(sqlstr)
%&</p>使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。 |
|