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 |