濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 安全腳本程序的編寫(xiě) V1.0第1/3頁(yè)

安全腳本程序的編寫(xiě) V1.0第1/3頁(yè)

熱門(mén)標(biāo)簽:沈陽(yáng)電話機(jī)器人公司 鄢陵學(xué)校如何做地圖標(biāo)注 虛擬電話外呼系統(tǒng) 鄭州智能外呼電銷機(jī)器人廠家 云南便宜外呼系統(tǒng)平臺(tái) 長(zhǎng)春公司外呼系統(tǒng)中心 廣東語(yǔ)音外呼系統(tǒng)公司 沈陽(yáng)三五防封電銷卡 成都ai外呼系統(tǒng)線路
基本思路:
為每一個(gè)功能寫(xiě)一個(gè)獨(dú)立的程序,程序頁(yè)
盡可能少的讓客戶了解你的服務(wù)器端信息
不要用"客戶應(yīng)該這么寫(xiě)"這個(gè)思路想問(wèn)題
盡可能多的想到不可能發(fā)生的事情 
1.關(guān)于交互式動(dòng)態(tài)網(wǎng)頁(yè)可能存在的問(wèn)題
1.1 form類型的交互
1.1.1 概念介紹
在我們和瀏覽者進(jìn)行交互時(shí),最常用到的就是form(post/get/put方法),雖然非常方便,但是很多問(wèn)題也是因他而起。
form表單中input標(biāo)志
用來(lái)接受用戶輸入的信息,例如:用戶名、密碼、email等。如果你沒(méi)有對(duì)用戶輸入進(jìn)行很好的檢查的話,一個(gè)惡意的用戶
會(huì)屏蔽掉一些安全機(jī)
制,繞過(guò)安全認(rèn)證。例如,輸入標(biāo)準(zhǔn)的HTML語(yǔ)句或者javascript語(yǔ)句會(huì)改變輸出結(jié)果 ,在輸入框中打入標(biāo)準(zhǔn)的HTML語(yǔ)句會(huì)
得到什么樣的結(jié)果呢?比如一個(gè)留言本,我們留言內(nèi)容中打入:font size=10>你好!/font>  如果你的程序中沒(méi)有屏
蔽html語(yǔ)句,那么就會(huì)改變"你好"字體的
大小。在留言本中改變字體大小和貼圖有時(shí)并不是什么壞事,反而可以使留言本生動(dòng)。但是如果在輸入框中寫(xiě)個(gè) 
javascript 的死循環(huán),比如:
a herf="http://someurl" onMouseover="while(1) {window.close('/')}">第一萬(wàn)個(gè)驚心動(dòng)魄/a> 那么其他查看該留言
的客人只要移
動(dòng)鼠標(biāo)到"第一萬(wàn)個(gè)驚心動(dòng)魄",上就會(huì)使用戶的瀏覽器因死循環(huán)而死掉。
1.1.2 防范要點(diǎn)
(1)對(duì)特殊字符進(jìn)行過(guò)濾
([\;\`'\\\|"*?~>^\(\)\[\]\{\}\$\n\r])/\\$1/g;),這個(gè)是最基本的,在很多地方也已經(jīng)不只一次提到過(guò)
script language="vbscript">
sub uBotton_onclick
if form1.uUserName.value=""then
msgbox"您的姓名不能為空!",0+32,"哦!還不行"
form1.uUserName.focus
exit sub
end if
if form1.uPassword.value=""then
msgbox"您的密碼不能為空!",0+32,"哦!還不行"
form1.uPassword.focus
exit sub
end if
if form1.uUserName.value=""then
msgbox"您的姓名不能為空!",0+32,"哦!還不行"
form1.uUserName.focus
exit sub
end if
form1.submit
end sub
/script>
function isEmpty(objname)
{
var str = document.inputform[objname].value
var tmpstr = str.replace([\;\`'\\\|"*?~>^\(\)\[\]\{\}\$\n\r])/\\$1/g;,"")
var tmpstr = tmpstr.replace([\;\`'\\\|"*?~>^\(\)\[\]\{\}\$\n\r])/\\$1/g;,"")
return (tmpstr.length==0)
}
function check()
{
tf=document.inputform
errors=""
if (isEmpty("username")) errors += "用戶名不能為空。\n";
if (isEmpty("password")) errors += "密碼不能為空!\n"
if (errors!="")
alert(errors);
return (errors=="")

(2) 對(duì)輸入的字符長(zhǎng)度進(jìn)行限制
(3) 進(jìn)行盡可能多的錯(cuò)誤出理和錯(cuò)誤陷阱
(4) 盡可能多的使用以下這些標(biāo)志,減少用戶輸入的機(jī)會(huì)
input type="checkbox" name="checkbox" value="checkbox">
select name="select"> /select>
input type="radio" name="radiobutton" value="radiobutton">
  
1.2 post/get類型的交互
1.2.1 概念介紹
這種類型的問(wèn)題主要是瀏覽者可以通過(guò)瀏覽器的地址欄對(duì)腳本頁(yè)通過(guò)添加參數(shù)來(lái)和服務(wù)器進(jìn)行交互,這些參數(shù)已經(jīng)繞過(guò)放
在客戶端提交頁(yè)的輸入檢
查了,還有就是可以通過(guò)地址欄輸入較長(zhǎng)的參數(shù)或惡意編造的代碼造成服務(wù)器異常運(yùn)算錯(cuò)誤,導(dǎo)致服務(wù)器宕機(jī)或緩沖區(qū)溢
出。
1.2.2 防范要點(diǎn)
(1) 盡量不要讓瀏覽者了解到你的運(yùn)算提交頁(yè)
(2) 不允許地址欄提交參數(shù)
例如ASP程序中的request.serverVariables(QUERY_STRING)檢測(cè)是否有參數(shù),如果有則使用response.redirect()強(qiáng)制返回
指定頁(yè),可以
是首頁(yè),或者你自己做的警告頁(yè)。
(3) 腳本頁(yè)間傳遞參數(shù)不要再瀏覽器欄顯示,盡可能少的讓瀏覽者了解你的程序規(guī)則、參數(shù)等
例如ASP中的Request.form和Request.QueryString這兩個(gè)數(shù)據(jù)集合分別使用的是post和get方法,我們盡量不要是用
Request.QueryString這個(gè)數(shù)據(jù)集合,盡可能少的讓瀏覽者有和你交互的機(jī)會(huì),
2. 安全認(rèn)證的問(wèn)題
2.1 需要安全認(rèn)證密碼認(rèn)證的可能存在的問(wèn)題
2.1.1 概念介紹
現(xiàn)在流行的CGI應(yīng)用程序傾向于收集信用卡信息。數(shù)據(jù)收集是CGI 應(yīng)用程序的一個(gè)簡(jiǎn)單的任務(wù),但是敏感信息的
收集需要一個(gè)將信息從瀏覽器傳送給服務(wù)器和CGI程序的安全途徑。
舉個(gè)例子,假設(shè)我要通過(guò)Internet來(lái)銷售書(shū)。我可能在瀏覽器上建立一個(gè)表單,允許要購(gòu)書(shū)的顧客通過(guò)表單提交它的個(gè)人
信息和信用卡號(hào)碼。受
到這些信息后,我會(huì)將它們存儲(chǔ)到我的計(jì)算機(jī)作為商業(yè)記錄。
如果有人侵入我的商業(yè)計(jì)算機(jī),那么他可能會(huì)訪問(wèn)存放顧客信息和信用卡號(hào)碼的機(jī)密數(shù)據(jù)。為了避免這種情況,我會(huì)審查
我的計(jì)算機(jī)配置安全了
,并確定用來(lái)接受表單的CGI腳本不會(huì)被惡意的操縱。換句話說(shuō),我,作為計(jì)算機(jī)的系統(tǒng)管理員和CGI程序員,要盡力控制
住第一個(gè)問(wèn)題:防止
信息直接從我的計(jì)算機(jī)中被竊取。
然而,怎樣防止當(dāng)信息由客戶端發(fā)往服務(wù)器過(guò)程中有人中途竊取呢?記住信息怎樣由Web服務(wù)器傳送到CGI程序了嗎?信息
通過(guò)網(wǎng)絡(luò)由瀏覽器先
傳送到服務(wù)器,然后服務(wù)器將信息傳送給CGI程序。這些信息可能在由客戶機(jī)傳送到服務(wù)器時(shí)被中途竊取(如圖2)。注意,
為了保護(hù)信息使其不會(huì)
被中途竊取,必須在客戶和服務(wù)器之間進(jìn)行加密。當(dāng)然,如果你的客戶機(jī)不能識(shí)別的話,你不能執(zhí)行特定CGI的加密。
由于Web處理的特點(diǎn),使用你獨(dú)有的單獨(dú)通過(guò)CGI程序?qū)崿F(xiàn)的安全處理協(xié)議的唯一途徑是:在表單信息通過(guò)瀏覽器傳送到服務(wù)
器之前將其加密。
這個(gè)方案如。
之前,發(fā)展你自己的安全處理協(xié)議幾乎是不可能的。感謝Java這樣的語(yǔ)言,最近在客戶端處理所作的創(chuàng)新,使得這個(gè)發(fā)展變
成可能。 方法是產(chǎn)生
一個(gè)標(biāo)準(zhǔn)HTML格式擴(kuò)展的Java接口。當(dāng)Java的提交按鈕被選擇時(shí),Java Applet會(huì)在利用標(biāo)準(zhǔn)的POST HTTP請(qǐng)求將它發(fā)送到
Web服務(wù)器前先
將值加密。
使用Java作為客戶機(jī)來(lái)發(fā)送和接收加密的數(shù)據(jù)將允許你使用自己定制的加密方案,而不需要一個(gè)昂貴的商業(yè)服務(wù)器。
因此,在網(wǎng)絡(luò)上安全保密地傳送數(shù)據(jù)信息需要調(diào)整瀏覽器和服務(wù)器之間的通信路徑,有一些是不能僅僅靠CGI就能夠控制
的。目前有兩種加密客
戶機(jī)/服務(wù)器信息處理的建議:SSL(Secure Sockets Layer)和SHTTP(Secure HTTP),分別由Netscape和EIT(Enterprise 
Integrations 
Technology)提議。關(guān)于這點(diǎn),目前還不清楚哪一個(gè)將成為標(biāo)準(zhǔn);很多公司在他們的服務(wù)器中兩種都采用了。因此,知道如
何在這兩者中編寫(xiě)
CGI程序是很有用的。
SSL是一個(gè)協(xié)議獨(dú)立的加密方案,在網(wǎng)絡(luò)信息包的應(yīng)用層和傳輸層之間提供了安全的通道(參照?qǐng)D5)。簡(jiǎn)單說(shuō)來(lái),就是HTML
或CGI經(jīng)過(guò)了幕后的
服務(wù)器進(jìn)行了加密處理,然而對(duì)HTML和CGI的作者來(lái)說(shuō)是透明的。
因?yàn)榭蛻舳撕头?wù)器端網(wǎng)絡(luò)程序處理加密過(guò)程,幾乎你的所有的CGI腳本不需要進(jìn)行安全事務(wù)的修正。有一個(gè)顯著的例外。
一個(gè)nph(no-parse-
header)的CGI程序繞過(guò)服務(wù)器而直接與客戶端進(jìn)行通信。因此,nph的CGI腳本不會(huì)經(jīng)過(guò)加密處理,因?yàn)樾畔⑽吹玫郊用堋?
受此影響的一個(gè)值得
注意的CGI應(yīng)用程序是Netscape服務(wù)器推動(dòng)的動(dòng)態(tài)實(shí)現(xiàn)(Netscape server-push animations)。我懷疑這是主要應(yīng)該值得注
意的,然而,更
有可能因?yàn)橐踩膫鬏斆舾行畔⒍鵂奚?yè)面中的動(dòng)畫(huà)。
SHTTP采用一種和SSL不同的方法。它通過(guò)擴(kuò)展HTTP協(xié)議(應(yīng)用層)來(lái)運(yùn)作,優(yōu)于一個(gè)較低層。因此,盡管SSL可以應(yīng)用于所有
的網(wǎng)絡(luò)服務(wù),然而
SHTTP是一個(gè)特定的Web協(xié)議。
另外,還有其它的優(yōu)點(diǎn)。作為HTTP的擴(kuò)展集,SHTTP全兼容于HTTP和SHTTP的瀏覽器和服務(wù)器。為了使用SSL,你必須有一個(gè)
支持SSL的瀏覽
器和服務(wù)器。另外,SHTTP是一個(gè)更靈活的協(xié)議。例如,這個(gè)服務(wù)器可以指定首選的加密方案。
SHTTP處理依賴于附加的HTTP頭。因此,如果你想讓你的CGI程序采用SHTTP的加密處理,你需要包含適當(dāng)?shù)念^。例如,替換
簡(jiǎn)單返回HTTP頭
。
Content-type:text/html
當(dāng)一個(gè)SHTTP服務(wù)器從CGI應(yīng)用程序中收到這個(gè)信息,它會(huì)知道在將其發(fā)送到瀏覽器之前將信息加密。一個(gè)非SHTTP的瀏覽器
將忽略附加的頭。
關(guān)于使用SHTTP的更多的信息,請(qǐng)參照SHTTP的說(shuō)明書(shū):
http://www.commerce.net/information/standards/drafts/shttp.txt
2.1.3 腳本解析
下面是我以前寫(xiě)的一段asp腳本,做了一些修改,把他貼出來(lái),讓大家看看我加入了設(shè)置,那里做的不夠好。我在這里就不
多說(shuō)了,有興趣可以到
我的論壇來(lái)大家討論。
!--#include file="conn.asp"-->
%
dim errmsg
if request.form("username")="" then
ErrMsg="用戶名不能為空"
foundError=True
else
UserName=request.form("UserName")
end if
if request.form("password")="" then
ErrMsg="密碼不能為空"
foundError=True
else
PassWord=request.form("PassWord")
end if
if FoundError=true then
showAnnounce(ErrMsg)
else
set rstmp=server.createobject("adodb.recordset")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
rstmp.open "Select * from User Where userName='"  UserName  "'",conn,3,3
if rstmp.bof then
session.contents("UserName")=UserName
rstmp.addnew
rstmp("username")=username
rstmp("userpassword")=password
rstmp("logins")=1
rstmp("online")=1
rstmp.update
response.redirect("index.asp")
elseif PassWord>rstmp("userpassword") then
ErrMsg="密碼錯(cuò)啦"
foundError=True
showAnnounce(ErrMsg)
else
session.contents("UserName")=UserName
rstmp("logins")=rstmp("logins")+1
rstmp("online")=1
rstmp.update
rstmp.close
Set rstmp=nothing
response.redirect("index.asp")
end if
123下一頁(yè)閱讀全文

標(biāo)簽:四平 馬鞍山 朝陽(yáng) 孝感 平頂山 遼陽(yáng) 防城港 湖北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《安全腳本程序的編寫(xiě) V1.0第1/3頁(yè)》,本文關(guān)鍵詞  安全,腳本,程序,的,編寫(xiě),;如發(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)文章
  • 下面列出與本文章《安全腳本程序的編寫(xiě) V1.0第1/3頁(yè)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于安全腳本程序的編寫(xiě) V1.0第1/3頁(yè)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    清流县| 邹平县| 沐川县| 手机| 原阳县| 柯坪县| 栾川县| 凤山县| 瑞安市| 清水县| 朔州市| 营山县| 宝应县| 武冈市| 神池县| 广汉市| 出国| 安化县| 怀集县| 石渠县| 资阳市| 黔西县| 临洮县| 敖汉旗| 历史| 探索| 伊宁县| 乐山市| 上林县| 项城市| 孙吴县| 济宁市| 黑河市| 巴青县| 文登市| 通榆县| 江孜县| 东阿县| 荆门市| 潢川县| 佛学|