论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于asp网站的安全性研究与实现(论文+程序)

4.1.2 防注入模块实现过程 

防注入模块的功能实现体现在注册页面上,当客户端提交非法信息进行非法注入时,系统会对客户端提交的非法参数进行加密,加密后存入数据库。当客户端进行非法注入时,首先调用GENKEY()函数产生双钥和模,然后调用Encode(pStrMessage)对非法信息进行加密,生成的密文存入数据库,管理员登录时候调用Dncode(pStrMessage)进行解密,通过浏览器显示注入信息。

内容来自论文无忧网 www.paper51.com

4.1.3 登录图片验证码的实现过程

内容来自论文无忧网 www.paper51.com

用户登录时候登录界面的 GetSafeCode函数去调用function.asp页面,这为了显示整个随机数字图片,然后GetSafeCode函数又去调用Safecode.asp页面,这是为了取得随机数字图片,并将随机数字放入到Session会话中。Safecode.asp又使用canvas.asp来产生随机图片及其颜色,canvas.asp又使用font.asp来产生了产生随机数及其字体。

paper51.com

4.2   模块流程图和功能图4.2.1 注册加密模块流程图和功能图

copyright paper51.com

1、注册加密模块流程图及说明 http://www.paper51.com

用户进行注册时首先显示注册页面,显示为必须进行填写的个人信息的对话框,包括ID、PASSWORD、TEL、QQ、E-mail等,此时用户需输入要注册的个人信息,模块会根据用户输入的合法性进行检测,如有错误输入则弹出对话框提示,用户单击“确定”按钮后返回输入框重新输入。所有信息判断为合法时对其进行加密并存入数据库,即注册结束,流程图如图2:

copyright paper51.com

paper51.com

图2 注册加密模块流程图

paper51.com

2、注册加密模块实现图及说明

内容来自www.paper51.com

注册加密界面的实现由register.asp页面体现,注册时需提交用户名、密码、确认密码、联系电话、邮箱、QQ、公司名称、补充说明,实现如图3:

内容来自www.paper51.com

             

http://www.paper51.com

图3 注册界面实现图 paper51.com

如用户提交信息有错误或未全部填写则转出信息提示,例如邮件地址不正确,则提示为非法,实现如图4: 内容来自www.paper51.com

内容来自www.paper51.com

图4 错误信息实现图 http://www.paper51.com

当用户注册信息全为合法时候对其进行加密后存入数据库,如图5: 内容来自论文无忧网 www.paper51.com

内容来自www.paper51.com

图5 注册信息加密图

http://www.paper51.com

4.2.2 登录安全模块流程图及功能图 paper51.com

1、登录安全模块流程图及说明

copyright paper51.com

用户登录时首先进入登录界面,此时需要输入用户名和密码,然后输入随机生成的验证码,模块会对用户输入信息进行仔细的检测,看是否有非法字符输入,如果有立即对非法数据进行加密并存入数据库后返回登录界面。如是合法用户信息,则判断是否为管理员,如是普通用户可正常登录并显示无权查看注入信息,如是管理员登录则可直接查看解密了的注入日志,流程图如图6:

paper51.com

内容来自www.paper51.com

http://www.paper51.com

加密非法信息并返回

内容来自论文无忧网 www.paper51.com

图6 登录安全模块流程图

copyright paper51.com

2、登录安全模块功能图及说明

copyright paper51.com

登录安全模块界面由login.asp页面体现,登录时需要提交合法的用户名、密码和注册码,实现如图7: http://www.paper51.com

内容来自www.paper51.com

图7 登录界面实现图

内容来自www.paper51.com

输入非法的用户名“select”和密码“1234567890”,实现SQL非法注入,示例如图8:

内容来自论文无忧网 www.paper51.com

copyright paper51.com

图8 实现非法注入示例图 内容来自论文无忧网 www.paper51.com

此时模块检测到用户注册信息含有非法字符自动终止转入错误提示页面,如图9:

paper51.com

内容来自www.paper51.com

图9 注入终止信息图

内容来自www.paper51.com

含有非法字符的注册信息加密后存入数据库文件中,如图10: paper51.com

paper51.com

图10 非法信息加密图

内容来自论文无忧网 www.paper51.com

管理员登录查看注入日志(包括解密了的用户名和密码,此外还包括确切的注入时间),如图11:                         http://www.paper51.com

内容来自论文无忧网 www.paper51.com

图11 非法注入信息解密图

paper51.com

4.3   模块主要代码及实现4.3.1 注册模块的安全代码及实现

copyright paper51.com

本模块主要由register.asp来实现,其主要安全代码和实现如下:

copyright paper51.com

1、RSA加密解密代码实现如下:

内容来自www.paper51.com

Class clsRSA paper51.com

PublicPrivateKey

内容来自论文无忧网 www.paper51.com

PublicPublicKey

paper51.com

PublicModulus paper51.com

Public SubGenKey() 内容来自www.paper51.com

以上函数是获取密钥。

内容来自论文无忧网 www.paper51.com

Dim lLngPhi paper51.com

Dim q

内容来自论文无忧网 www.paper51.com

Dim p copyright paper51.com

Randomize

内容来自论文无忧网 www.paper51.com

     Do

copyright paper51.com

            Do

http://www.paper51.com

            '2 random primary numbers (0 to 1000) 内容来自www.paper51.com

                   Do

http://www.paper51.com

                          p= Rnd * 1000 \ 1 paper51.com

                   LoopWhile Not IsPrime(p) 内容来自论文无忧网 www.paper51.com

                   Do copyright paper51.com

                          q= Rnd * 1000 \ 1 paper51.com

                   LoopWhile Not IsPrime(q) paper51.com

            'n = product of 2 primes http://www.paper51.com

            Modulus= p * q \ 1

内容来自论文无忧网 www.paper51.com

            'random decryptor (2 to n) 内容来自www.paper51.com

            PrivateKey= Rnd * (Modulus - 2) \ 1 + 2

内容来自www.paper51.com

           

paper51.com

            lLngPhi= (p - 1) * (q - 1) \ 1

paper51.com

            PublicKey= Euler(lLngPhi, PrivateKey)

http://www.paper51.com

            LoopWhile PublicKey = 0 Or PublicKey = 1

内容来自论文无忧网 www.paper51.com

     ' Loop if we can'tcrypt/decrypt a byte 内容来自www.paper51.com

     Loop While NotTestCrypt(255)

http://www.paper51.com

End Sub 内容来自www.paper51.com

PrivateFunction TestCrypt(ByRef pBytData)

http://www.paper51.com

DimlStrCrypted 内容来自www.paper51.com

lStrCrypted= Crypt(pBytData, PublicKey)

copyright paper51.com

TestCrypt =Crypt(lStrCrypted, PrivateKey) = pBytData

copyright paper51.com

End Function paper51.com

PrivateFunction Euler(ByRef pLngPHI, ByRef pLngKey)

copyright paper51.com

Dim lLngR(3) copyright paper51.com

Dim lLngP(3)

copyright paper51.com

Dim lLngQ(3) copyright paper51.com

DimlLngCounter http://www.paper51.com

DimlLngResult copyright paper51.com

Euler = 0 http://www.paper51.com

lLngR(1) =pLngPHI: lLngR(0) = pLngKey

http://www.paper51.com

lLngP(1) =0: lLngP(0) = 1

copyright paper51.com

lLngQ(1) =2: lLngQ(0) = 0 内容来自论文无忧网 www.paper51.com

lLngCounter= -1 内容来自论文无忧网 www.paper51.com

Do UntillLngR(0) = 0 内容来自论文无忧网 www.paper51.com

lLngR(2) =lLngR(1): lLngR(1) = lLngR(0) 内容来自论文无忧网 www.paper51.com

lLngP(2) =lLngP(1): lLngP(1) = lLngP(0) copyright paper51.com

lLngQ(2) =lLngQ(1): lLngQ(1) = lLngQ(0) paper51.com

lLngCounter= lLngCounter + 1 内容来自www.paper51.com

lLngR(0) =lLngR(2) Mod lLngR(1)

http://www.paper51.com

lLngP(0) =((lLngR(2)\lLngR(1)) * lLngP(1)) + lLngP(2)

内容来自www.paper51.com

lLngQ(0) =((lLngR(2)\lLngR(1)) * lLngQ(1)) + lLngQ(2)

paper51.com

Loop 内容来自论文无忧网 www.paper51.com

lLngResult =(pLngKey * lLngP(1)) - (pLngPHI * lLngQ(1))

http://www.paper51.com

IflLngResult > 0 Then copyright paper51.com

Euler =lLngP(1) http://www.paper51.com

Else

内容来自www.paper51.com

Euler =Abs(lLngP(1)) + pLngPHI 内容来自www.paper51.com

End If

内容来自论文无忧网 www.paper51.com

End Function paper51.com

PublicFunction Crypt(pLngMessage, pLngKey)

http://www.paper51.com

On ErrorResume Next

paper51.com

Dim lLngMod

paper51.com

DimlLngResult paper51.com

DimlLngIndex 内容来自www.paper51.com

If pLngKeyMod 2 = 0 Then http://www.paper51.com

lLngResult =1 内容来自论文无忧网 www.paper51.com

ForlLngIndex = 1 To pLngKey / 2

http://www.paper51.com

lLngMod =(pLngMessage ^ 2) Mod Modulus 内容来自论文无忧网 www.paper51.com

' Mod mayerror on key generation 内容来自论文无忧网 www.paper51.com

lLngResult =(lLngMod * lLngResult) Mod Modulus

内容来自www.paper51.com

If Err ThenExit Function copyright paper51.com

Next paper51.com

Else copyright paper51.com

lLngResult =pLngMessage 内容来自论文无忧网 www.paper51.com

ForlLngIndex = 1 To pLngKey / 2

http://www.paper51.com

lLngMod =(pLngMessage ^ 2) Mod Modulus copyright paper51.com

On ErrorResume Next

http://www.paper51.com

' Mod mayerror on key generation

paper51.com

lLngResult =(lLngMod * lLngResult) Mod Modulus

paper51.com

If Err ThenExit Function 内容来自论文无忧网 www.paper51.com

Next copyright paper51.com

End If

paper51.com

Crypt =lLngResult

内容来自论文无忧网 www.paper51.com

End Function

copyright paper51.com

PrivateFunction IsPrime(ByRef pLngNumber) http://www.paper51.com

DimlLngSquare

copyright paper51.com

DimlLngIndex

paper51.com

IsPrime =False 内容来自论文无忧网 www.paper51.com

IfpLngNumber < 2 Then Exit Function

内容来自论文无忧网 www.paper51.com

IfpLngNumber Mod 2 = 0 Then Exit Function paper51.com

lLngSquare =Sqr(pLngNumber)'Sqr

http://www.paper51.com

or lLngIndex= 3 To lLngSquare Step 2 copyright paper51.com

IfpLngNumber Mod lLngIndex = 0 Then Exit Function paper51.com

Next 内容来自www.paper51.com

IsPrime =True

copyright paper51.com

End Function 内容来自www.paper51.com

PublicFunction Encode(ByVal pStrMessage)

内容来自论文无忧网 www.paper51.com

以上函数为加密函数。 内容来自论文无忧网 www.paper51.com

DimlLngIndex paper51.com

DimlLngMaxIndex

http://www.paper51.com

DimlBytAscii 内容来自论文无忧网 www.paper51.com

DimlLngEncrypted copyright paper51.com

lLngMaxIndex= Len(pStrMessage)

内容来自www.paper51.com

IflLngMaxIndex = 0 Then Exit Function

paper51.com

ForlLngIndex = 1 To lLngMaxIndex

内容来自论文无忧网 www.paper51.com

lBytAscii =Asc(Mid(pStrMessage, lLngIndex, 1))

内容来自论文无忧网 www.paper51.com

lLngEncrypted= Crypt(lBytAscii, PublicKey)

paper51.com

Encode =Encode & NumberToHex(lLngEncrypted, 4) 内容来自论文无忧网 www.paper51.com

Next 内容来自www.paper51.com

End Function

内容来自www.paper51.com

PublicFunction Decode(ByVal pStrMessage)

paper51.com

以上函数为解密函数。

copyright paper51.com

DimlBytAscii 内容来自www.paper51.com

DimlLngIndex copyright paper51.com

DimlLngMaxIndex 内容来自论文无忧网 www.paper51.com

DimlLngEncryptedData copyright paper51.com

Decode ="" copyright paper51.com

ifpStrMessage<>""then

paper51.com

lLngMaxIndex= Len(pStrMessage)

copyright paper51.com

end if paper51.com

ForlLngIndex = 1 To lLngMaxIndex Step 4 copyright paper51.com

lLngEncryptedData= HexToNumber(Mid(pStrMessage, lLngIndex, 4)) http://www.paper51.com

lBytAscii =Crypt(lLngEncryptedData, PrivateKey) paper51.com

Decode =Decode & Chr(lBytAscii) paper51.com

Next copyright paper51.com

End Function http://www.paper51.com

PrivateFunction NumberToHex(ByRef pLngNumber, ByRef pLngLength) 内容来自www.paper51.com

NumberToHex= Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)

copyright paper51.com

End Function 内容来自www.paper51.com

PrivateFunction HexToNumber(ByRef pStrHex)

paper51.com

HexToNumber= CLng("&h" & pStrHex) 内容来自www.paper51.com

End Function 内容来自论文无忧网 www.paper51.com

End Class 内容来自论文无忧网 www.paper51.com

%> 内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式