小女巫 发表于 2015-1-16 22:57:28

ASP教程之用ASP完成撑持附件的EMail体系(2)

ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;不外这仅仅只是失掉了发送者的ip地点和mac地点,并且克制用户本人变动本人ip地点的代码,由于我们的体系是必要对团体修正ip的举动举行克制的。

<%
strIP=Request.ServerVariables("REMOTE_ADDR")


Setnet=Server.CreateObject("wscript.network")
Setsh=Server.CreateObject("wscript.shell")
sh.run"%comspec%/cnbtstat-A"&strIP&">c:"&strIP&".txt",0,true
Setsh=nothing
Setfso=createobject("scripting.filesystemobject")
Setts=fso.opentextfile("c:"&strIP&".txt")
macaddress=null
DoWhileNotts.AtEndOfStream
data=ucase(trim(ts.readline))
Ifinstr(data,"MACADDRESS")Then
macaddress=trim(split(data,"=")(1))
ExitDo
EndIf
loop
ts.close
Setts=nothing
fso.deletefile"c:"&strIP&".txt"
Setfso=nothing
GetMACAddress=macaddress
strMac=GetMACAddress
setconn=server.CreateObject("adodb.connection")
conn.open"DSN=;UID=;PWD="
dsnpath="DSN=;UID=;PWD="
setrs=server.CreateObject("adodb.recordset")
sele="select*fromgetmacwhereg_mac="&strMac&""

rs.opensele,dsnpath
ifrs.bofthen
setconn=server.CreateObject("adodb.connection")
conn.open"DSN=;UID=;PWD="
dsnpath="DSN=;UID=;PWD="
setrs=server.CreateObject("adodb.recordset")
g_id=mid(strIP,9)
g_id=left(g_id,2)
response.writeg_id
ifisnumeric(g_id)then
g_id=cint(g_id)
else
g_id=0
endif
sele="insertintogetmac(g_ip,g_mac,g_id,g_ok)values("&strIP&","&strMac&","&g_id&",0)"
rs.opensele,dsnpath
else
setconn=server.CreateObject("adodb.connection")
conn.open"DSN=;UID=;PWD="
dsnpath="DSN=;UID=;PWD="
setrs=server.CreateObject("adodb.recordset")

sele="select*fromgetmacwhereg_ip="&trim(strIP)&"andg_mac="&trim(strMac)&""
rs.opensele,dsnpath

ifrs.boforrs.eofthen
setrs1=server.CreateObject("adodb.recordset")
sele="insertintobadmac(ip,mac,thetime)values("&strIP&","&strMac&","&now()&")"
rs1.opensele,dsnpath
response.redirect("/reg/wrong.asp")
response.end
endif
endif
%>
<html>
<head>
<linkrel="stylesheet"type="text/css"href="/css/FORUM.CSS">
<styletype=text/css>
<!--
input{font-size:9pt;color:#0011dd;background-color:#e9e9f9;padding-top:0px}
select{font-size:9pt;color:#0011dd;background-color:#e9e9f9;padding-top:0px}
textarea{font-size:9pt;color:#0011dd;background-color:#e9e9f9;padding-top:0px}
-->
</style>
<title>邮件体系</title></head><bodybgcolor="#FEF7ED">
<%
Response.Expires=0
Functionbin2str(binstr)
Dimvarlen,clow,ccc,skipflag

skipflag=0
ccc=""
IfNotIsNull(binstr)Then
varlen=LenB(binstr)
Fori=1Tovarlen
Ifskipflag=0Then
clow=MidB(binstr,i,1)
IfAscB(clow)>127Then
ccc=ccc&Chr(AscW(MidB(binstr,i+1,1)&clow))
skipflag=1
Else
ccc=ccc&Chr(AscB(clow))
EndIf
Else
skipflag=0
EndIf
Next
EndIf
bin2str=ccc
EndFunction


varByteCount=Request.TotalBytes
response.writevarbytecount

bnCRLF=chrB(13)&chrB(10)

binHTTPHeader=Request.BinaryRead(varByteCount)

response.writevbenter
response.write"

"&cstr(binhttpheader)&"

"


sread=0
eread=0


入手下手读非文件域的数据
setconn=Server.CreateObject("ADODB.Connection")
conn.open"DSN=;UID=;PWD="

SQL="select*fromt_mailwheremailid=0"
setrs=server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,3,3
rs.addnew
rs("emaillevel")=0
rs("receempl")=""
DowhilelenB(binHTTPHeader)>46

Divider=LEFTb(binHTTPHeader,INSTRB(binHTTPHeader,bnCRLF)-1)
binHeaderData=Leftb(binHTTPHeader,INSTRB(binHTTPHeader,bnCRLF&bnCRLF)-1)
strHeaderData=bin2str(binHeaderData)

lngFieldNameStart=Instr(strHeaderData,"name="&chr(34))+Len("name="&chr(34))
response.write"
lngfieldnamestart:"&lngfieldnamestart
lngFieldNameEnd=Instr(lngFieldNameStart,strHeaderData,chr(34))
response.write"
lngfieldnameEND:"&lngfieldnameEND


strFieldName=Mid(strHeaderData,lngFieldNameStart,lngFieldNameEnd-lngFieldNameStart)

RESPOnSE.WRITE"<BR>STRFIELDNAME:"&STRfieldname


strFieldName=Trim(strFieldName)


strFieldName=Replace(strFieldName,vbcrlf,vbnullstring)

判别文件数据时分入手下手

IfstrComp(strFieldName,"FileUploadStart",1)=0andsread=0Then
response.write"找到了文件入手下手的中央"
sread=1
response.write"
"&INSTRB(DataStart+1,binHTTPHeader,divider)&"
"
binHTTPHeader=MIDB(binHTTPHeader,INSTRB(DataStart+1,binHTTPHeader,divider))
exitdo
Endif
DataStart=INSTRB(binHTTPHeader,bnCRLF&bn</p>在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

莫相离 发表于 2015-1-20 06:38:49

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

admin 发表于 2015-1-28 22:00:11

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

分手快乐 发表于 2015-2-1 12:08:58

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

透明 发表于 2015-2-7 04:40:51

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

谁可相欹 发表于 2015-2-20 14:06:54

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

小妖女 发表于 2015-3-6 17:45:22

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

飘飘悠悠 发表于 2015-3-13 04:45:59

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

金色的骷髅 发表于 2015-3-20 13:10:27

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
页: [1]
查看完整版本: ASP教程之用ASP完成撑持附件的EMail体系(2)