安全腳本程序的編寫 V1.0第1/3頁
2024-05-04 10:58:48
供稿:網友
 
基本思路: 
為每一個功能寫一個獨立的程序,程序頁 
盡可能少的讓客戶了解你的服務器端信息 
不要用"客戶應該這么寫"這個思路想問題 
盡可能多的想到不可能發生的事情  
1.關于交互式動態網頁可能存在的問題 
1.1 form類型的交互 
1.1.1 概念介紹 
在我們和瀏覽者進行交互時,最常用到的就是form(post/get/put方法),雖然非常方便,但是很多問題也是因他而起。 
form表單中input標志 
用來接受用戶輸入的信息,例如:用戶名、密碼、email等。如果你沒有對用戶輸入進行很好的檢查的話,一個惡意的用戶 
會屏蔽掉一些安全機 
制,繞過安全認證。例如,輸入標準的HTML語句或者javascript語句會改變輸出結果 ,在輸入框中打入標準的HTML語句會 
得到什么樣的結果呢?比如一個留言本,我們留言內容中打入:<font size=10>你好!</font>  如果你的程序中沒有屏 
蔽html語句,那么就會改變"你好"字體的 
大小。在留言本中改變字體大小和貼圖有時并不是什么壞事,反而可以使留言本生動。但是如果在輸入框中寫個  
javascript 的死循環,比如: 
<a herf="http://someurl" onMouseover="while(1) {window.close('/')}">第一萬個驚心動魄</a> 那么其他查看該留言 
的客人只要移 
動鼠標到"第一萬個驚心動魄",上就會使用戶的瀏覽器因死循環而死掉。 
1.1.2 防范要點 
(1)對特殊字符進行過濾 
([/&;/`'///|"*?~<>^/(/)/[/]/{/}/$/n/r])///$1/g;),這個是最基本的,在很多地方也已經不只一次提到過 
<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=="")