主頁(yè) > 知識(shí)庫(kù) > 程序開(kāi)發(fā)中的幾個(gè)請(qǐng)不要相信

程序開(kāi)發(fā)中的幾個(gè)請(qǐng)不要相信

熱門(mén)標(biāo)簽:交行外呼系統(tǒng)有哪些 寧夏保險(xiǎn)智能外呼系統(tǒng)哪家好 防城港市ai電銷(xiāo)機(jī)器人 隨州銷(xiāo)售外呼系統(tǒng)平臺(tái) 激戰(zhàn)黃昏地圖標(biāo)注說(shuō)明 不同的地圖標(biāo)注 怎么更改地圖標(biāo)注電話(huà) 臨滄移動(dòng)外呼系統(tǒng)哪家有 溫嶺代理外呼系統(tǒng)
鏈接中的例子是一些腳本攻擊相關(guān)的內(nèi)容,有時(shí)間的朋友可以點(diǎn)開(kāi)看看。

1.不要相信Request.QueryString:

相信在asp時(shí)代,這個(gè)問(wèn)題比較嚴(yán)重,不信,隨便到網(wǎng)絡(luò)上找?guī)讉€(gè)asp的企業(yè)站,找到這種url"view.asp?id=xxx",改成"view.asp?id=xxx or 1=1",相信你會(huì)看到不一樣的東西,到了.net,應(yīng)該很少了,不過(guò)上次看到有人說(shuō)CSDN爆過(guò)哦,簡(jiǎn)單的解決方法是在取得數(shù)據(jù)時(shí)做數(shù)據(jù)類(lèi)型驗(yàn)證或轉(zhuǎn)換。比如:
int ViewID = 0;
if(int.TryParse(Request.QueryString["ID"], out ViewID)){
//...
}
2.不要相信maxlength:
 有時(shí)候我們想客戶(hù)端輸入的某個(gè)值不超過(guò)一定的長(zhǎng)度,這個(gè)時(shí)候可能就會(huì)用到input的maxlength,但maxlength能100%保證這個(gè)值的長(zhǎng)度不超過(guò)maxlength嗎?

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

顯然,maxlength是不可信的,簡(jiǎn)單的解決辦法是后臺(tái)代碼驗(yàn)證數(shù)據(jù)長(zhǎng)度:
string UserName = Request.QueryString["UserName"];
if(!string.IsNullOrEmpty(UserName)UserName.length > x){
//...提示錯(cuò)誤或截?cái)鄶?shù)據(jù)
}
3.不要相信Hidden:
有時(shí)候我們想把些信息保存到前臺(tái)頁(yè)面,然后再發(fā)送回來(lái),但是我們又不想讓客戶(hù)看到這個(gè)信息,于是,我們把數(shù)據(jù)放到了hidden里面,那客戶(hù)提交數(shù)據(jù)時(shí),hidden里的內(nèi)容真的是我們放的內(nèi)容嗎?

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

這個(gè)我一時(shí)也沒(méi)想到好的驗(yàn)證方法,暫時(shí)也沒(méi)有特殊的需求說(shuō)必須驗(yàn)證。
4.不要相信客戶(hù)端驗(yàn)證:

比如2和3中的問(wèn)題,可能有的朋友覺(jué)得,我客戶(hù)端再加個(gè)驗(yàn)證不就OK了嗎?可是,往往,客戶(hù)端驗(yàn)證也是不安全的,首先,如果客戶(hù)端禁用腳本,那客戶(hù)端驗(yàn)證是完全失效的,另外,在腳本有效的情況下,腳本驗(yàn)證也是可以被篡改的。

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

以前QQ空間里可以通過(guò)這個(gè)方法免費(fèi)使用黃鉆模板,不知道現(xiàn)在還有沒(méi)有。這個(gè)就沒(méi)有什么好的解決辦法,只能后臺(tái)再驗(yàn)證一次。
5.不要相信編輯器:

有的時(shí)候,可能項(xiàng)目中要用到一些簡(jiǎn)單的編輯器,于是,我們就找到了一些編輯器,把不需要的功能(比如:編輯源碼、插入圖片等)剔除掉,就成了個(gè)簡(jiǎn)單的編輯器,那這樣的編輯器還會(huì)有什么問(wèn)題嗎?

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]

暫時(shí)也沒(méi)有什么好的解決辦法,以前找到過(guò)過(guò)濾script標(biāo)簽的代碼,但似乎不太完美。
6.不要相信Cookie:
網(wǎng)站中不可避免的會(huì)使用到Cookie,但如果一不注意,小心你的Cookie成了別人的"Cookie",
http://img.jb51.net/online/demo0415/Cookie.asp
取Cookie和寫(xiě)Cookie的js方法是在網(wǎng)上找到的,具體鏈接也找不到了。解決辦法,似乎是Cookie加密(當(dāng)然,即使是加密了,也盡量不要把敏感數(shù)據(jù)放到Cookie中),不知道各位高手還有沒(méi)有其它好辦法。
7.不要相信Request.UrlReferrer:
如果有朋友用這個(gè)來(lái)驗(yàn)證請(qǐng)求,那么請(qǐng)注意了,這個(gè)東西也是不可信的。見(jiàn)代碼;
System.Net.HttpWebRequest request = System.Net.WebRequest.Create("https://www.jb51.net/") as System.Net.HttpWebRequest;
request.Referer = "https://www.jb51.net/";
...
那么,這個(gè)時(shí)候你取得的Urlreferrer會(huì)是https://www.jb51.net/,但這個(gè)請(qǐng)求卻是偽造的。
8.不要相信用戶(hù):
用戶(hù)就是你潛在的威脅,客戶(hù)端的東西,永遠(yuǎn)都不要輕信。
另,select標(biāo)簽的內(nèi)容也是不可信的,大家可以動(dòng)手試試,隨便建個(gè)頁(yè)面,里面放個(gè)select,然后:
復(fù)制代碼 代碼如下:

javascript:alert(window.c=function(){var s=document.getElementsByTagName("select")[0];for(var x = 0; x 100; x++){s.options[x]=new Option("選項(xiàng)" + x, x)}}());

歡迎高手不吝賜教。示例代碼下載。

標(biāo)簽:無(wú)錫 紅河 河源 沈陽(yáng) 忻州 阜陽(yáng) 哈密 青海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《程序開(kāi)發(fā)中的幾個(gè)請(qǐng)不要相信》,本文關(guān)鍵詞  程序開(kāi)發(fā),中的,幾個(gè),請(qǐng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《程序開(kāi)發(fā)中的幾個(gè)請(qǐng)不要相信》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于程序開(kāi)發(fā)中的幾個(gè)請(qǐng)不要相信的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章