ASP生成偽參數(shù)程序設(shè)計(jì)技巧
更新時間:2008年01月05日 12:28:42 作者:
電影系統(tǒng)經(jīng)常用ASP偽參數(shù),可以防范通過id采集數(shù)據(jù)。
前兩天在做一個站內(nèi)版的企搜引擎,發(fā)現(xiàn)某些站點(diǎn)可以鏈接站點(diǎn)內(nèi)容。。
奇怪之下看了看,原來是按照數(shù)據(jù)庫ID的自動編號規(guī)律進(jìn)行鏈接的~~
閑暇之余弄了下面這個東東,希望對大家在以后的編寫ASP程序中有所幫助!
<%
''//生成指定位數(shù)的隨機(jī)數(shù)字
''//也可以用Guidy寫的iXuEr_Rnd_Str函數(shù),自帶15種樣式,可以偽MD5啦!!
Function rndStr(strLong)
Dim tempStr
Randomize
Do While Len(rndStr) < strLong
tempStr=CStr(Chr((57-48)*rnd+48))
rndStr=rndStr&tempStr
Loop
rndStr=rndStr
End Function
%>
下面以Form表單中提交的參數(shù)為例子針對Request.Form,需要傳遞的參數(shù)doAction原來的值是從數(shù)據(jù)庫讀取的ID
<form name=iform action="ABC.asp" method="post">
<input name=doAction type="hidden" value="<%=rndStr(10)%><%=Rs("ID")%><%=rndStr(10)%>">
</form>
注意:
上面的doAction的值有了改變,每刷新一次頁面得到的值都不一樣~~
下面是ABC.asp頁面
首先取得doAction的值
doAction = Trim(Request.Form("doAction"))
下面大家可以自己加一點(diǎn)驗(yàn)證,如IsNumeric等!
然后我們來分解doAction的值
Dim LastID
doAction = Mid(doAction,11)
LastID = Mid(doAction,1,Len(doAction)-10)
如果大家對Mid函數(shù)熟悉的話,上面的內(nèi)容很容易就猜到,簡單吧?
下面是實(shí)際的例子:
原doAction要傳遞的ID在數(shù)據(jù)庫里(字段類型為自動編號)的值為:34
說明:
Mid(doAction,11)里的11為你所生成隨機(jī)字符位數(shù)+1
LastID = Mid(doAction,1,Len(doAction)-10)里的10為所指定生成的隨機(jī)字符位數(shù)!
Dim LastID
doAction = 3614354944348151287527 — 經(jīng)過偽裝后的ID值(完全可以當(dāng)數(shù)字來驗(yàn)證)
doAction = Mid(doAction,11)
LastID = Mid(doAction,1,Len(doAction)-10)
LastID = 34
我實(shí)驗(yàn)了一下,如果配合隨機(jī)生成的字母和數(shù)字一起運(yùn)用的話,那完全是可以偽成MD5類似的值!
只是條件就一個,要可以指定隨機(jī)字符的位數(shù)!
哈哈,現(xiàn)在大家Response.Write輸出LastID的值看看,是不是又是數(shù)據(jù)庫里的ID啦?
這個方法可以運(yùn)用到影片參數(shù)的加密,下載等.如做了政府的公文流轉(zhuǎn)系統(tǒng),還可以用到文件上面去!
針對Request.QueryString的也是同一個道理!照葫蘆畫瓢啦...
以上是本人在編寫ASP程序中的一點(diǎn)點(diǎn)經(jīng)驗(yàn),不足之處請大家多多指正!
奇怪之下看了看,原來是按照數(shù)據(jù)庫ID的自動編號規(guī)律進(jìn)行鏈接的~~
閑暇之余弄了下面這個東東,希望對大家在以后的編寫ASP程序中有所幫助!
<%
''//生成指定位數(shù)的隨機(jī)數(shù)字
''//也可以用Guidy寫的iXuEr_Rnd_Str函數(shù),自帶15種樣式,可以偽MD5啦!!
Function rndStr(strLong)
Dim tempStr
Randomize
Do While Len(rndStr) < strLong
tempStr=CStr(Chr((57-48)*rnd+48))
rndStr=rndStr&tempStr
Loop
rndStr=rndStr
End Function
%>
下面以Form表單中提交的參數(shù)為例子針對Request.Form,需要傳遞的參數(shù)doAction原來的值是從數(shù)據(jù)庫讀取的ID
<form name=iform action="ABC.asp" method="post">
<input name=doAction type="hidden" value="<%=rndStr(10)%><%=Rs("ID")%><%=rndStr(10)%>">
</form>
注意:
上面的doAction的值有了改變,每刷新一次頁面得到的值都不一樣~~
下面是ABC.asp頁面
首先取得doAction的值
doAction = Trim(Request.Form("doAction"))
下面大家可以自己加一點(diǎn)驗(yàn)證,如IsNumeric等!
然后我們來分解doAction的值
Dim LastID
doAction = Mid(doAction,11)
LastID = Mid(doAction,1,Len(doAction)-10)
如果大家對Mid函數(shù)熟悉的話,上面的內(nèi)容很容易就猜到,簡單吧?
下面是實(shí)際的例子:
原doAction要傳遞的ID在數(shù)據(jù)庫里(字段類型為自動編號)的值為:34
說明:
Mid(doAction,11)里的11為你所生成隨機(jī)字符位數(shù)+1
LastID = Mid(doAction,1,Len(doAction)-10)里的10為所指定生成的隨機(jī)字符位數(shù)!
Dim LastID
doAction = 3614354944348151287527 — 經(jīng)過偽裝后的ID值(完全可以當(dāng)數(shù)字來驗(yàn)證)
doAction = Mid(doAction,11)
LastID = Mid(doAction,1,Len(doAction)-10)
LastID = 34
我實(shí)驗(yàn)了一下,如果配合隨機(jī)生成的字母和數(shù)字一起運(yùn)用的話,那完全是可以偽成MD5類似的值!
只是條件就一個,要可以指定隨機(jī)字符的位數(shù)!
哈哈,現(xiàn)在大家Response.Write輸出LastID的值看看,是不是又是數(shù)據(jù)庫里的ID啦?
這個方法可以運(yùn)用到影片參數(shù)的加密,下載等.如做了政府的公文流轉(zhuǎn)系統(tǒng),還可以用到文件上面去!
針對Request.QueryString的也是同一個道理!照葫蘆畫瓢啦...
以上是本人在編寫ASP程序中的一點(diǎn)點(diǎn)經(jīng)驗(yàn),不足之處請大家多多指正!
相關(guān)文章
ASP轉(zhuǎn)換格林威治時間函數(shù)DateDiff()應(yīng)用
ASP提供了一個叫 DateDiff() 的函數(shù),這個函數(shù)可以返回一個時間差的秒,那就是說我們放進(jìn)去一個格林威治標(biāo)準(zhǔn)時間與現(xiàn)在的時間對比一下返回秒就OK2014-06-06asp 實(shí)現(xiàn)當(dāng)有新信息時播放語音提示的效果
最近做一套程序的時候,客戶要求當(dāng)有新信息的時候播放一段語音來提示一下,根據(jù)情況,總結(jié)思路如下2009-06-06如何在 Access 2003 和 Access 2002 中創(chuàng)建 DSN 的連接到 SQLServer 對鏈接表
如何在 Access 2003 和 Access 2002 中創(chuàng)建 DSN 的連接到 SQLServer 對鏈接表...2006-10-10asp下利用fso實(shí)現(xiàn)文件夾或文件移動改名等操作函數(shù)
以后利用fso來操作文件和文件夾就方便了2008-01-01asp #include file 與 #include virtual 的區(qū)別小結(jié)
簡單來說,#include file后面跟的是文件的“相對路徑”, #include virtual后面跟的是文件的“絕對路徑”。2009-06-06ASP與Excel結(jié)合生成數(shù)據(jù)表和Chart圖的代碼
ASP與Excel結(jié)合生成數(shù)據(jù)表和Chart圖的代碼,需要的朋友可以參考下。2009-12-12