安全腳本程序的編寫 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=="")