web代碼安全問題大集合
一, 數(shù)據(jù)庫安全性
1, MSSQL數(shù)據(jù)庫安全性
l web中不允許使用sa級的用戶連接數(shù)據(jù)庫
解決方法:
刪除sa用戶,新建一個權(quán)限為sa的用戶,用戶名和密碼一樣要復(fù)雜。以防暴力破解。
新建一個web連接用戶,去掉所有服務(wù)器角色,在用戶映射中加入此用戶要操作的數(shù)據(jù)庫和db_public身份。
如果需要其它操作要另加權(quán)限(如只加insert/delete/select/update)。
每個人都沒法保證自己寫的代碼沒有漏洞。只要在數(shù)據(jù)庫層做下處理以防入侵。如果有SQL注入db_public身份一樣能對數(shù)據(jù)庫添加/修改/刪除權(quán)限,所以一定不能存在SQL注入漏洞。
如果能防SQL注入和權(quán)限限制就很難發(fā)生暴庫/跨庫現(xiàn)像。
2, Access數(shù)據(jù)庫安全性
解決方法:
防暴庫:在數(shù)據(jù)庫連接時加入錯誤處理代碼,如果數(shù)據(jù)庫連接失敗就提示錯誤信息或轉(zhuǎn)向。不能由系統(tǒng)本身提示錯誤信息,
防下載。
u 第一步:新建一個表。
u 第二步:在表中建一個字段,名稱隨意,類型是OLE對象,然后用ASP代碼向字段中添加一條記錄寫入單字節(jié)的"<%" 代碼為:Insert into tablename(fieldname)value (chrB(asc("<")) & chrB(asc("%")))。
u 第三步:將數(shù)據(jù)庫改名為*.ASP
最安全的方法是用使用ODBC數(shù)據(jù)源連接
二, web代碼安全性
1, 備份文件時的小漏洞。
有些ASP編輯器會自動備份asp文件,并且改名為*.bak,這樣就存在了會被下載的漏洞,在給asp文件改名時,不要修改為*.txt/.bak/等等,一定要保存擴展名不變(*.asp),在上傳到站點時請不要上傳備份文件。
2, 防SQL注入。
SQL注入主要是單引號沒有過濾,讓人利用,重新生成一個具有威脅性的SQL語句。
如:http://www+hnbenet+com/view+asp?id=100如果存在SQL注入我們就可以這么寫:http://www+hnbenet+com/view+asp?id=100;delete * from tablename;后臺運行時為select * from aaa where;delete * from tablename
在這里要提醒大家,不要認為.net的安全性高就沒有SQL注入了。錯,只要和數(shù)據(jù)庫操作有關(guān)的都存在SQL注入漏洞。無論是軟件還是網(wǎng)站,都存在。
解決方法:
在頁面的開始位置過濾接收到的非法字符,如exec /delete/insert into/update/’ 等等,這里過濾不是指將非法字符過濾為空串,而是過濾為相近的字符;蛘呷绻嬖诜欠ㄗ址麆t轉(zhuǎn)向到錯誤處理頁面。這里說個例子如果將exec過濾為空串時會出來什么后果,如果字串中存在exexecec 請問過濾后是什么,還是exec。這里不多說了,大家都明白了哈。
如果接收參數(shù)為數(shù)值型時,必需要先判斷數(shù)據(jù)類型,以防出現(xiàn)其它錯誤。往往黑客信息的來源就是頁面出錯的信息。
如果參數(shù)為字符型時,必需要過濾字符串中的單引號為雙引號或其它字符。
這里寫個例子:往往我們的代碼都是這么寫的select * fromaaa where bbb=’” + sVal +”’” 表面上看是沒有問題的,是正確的,不過此句存在SQL注入。為什么呢,請看:sVal的值是外部提交的數(shù)據(jù),如果sVal的值為aaa’;delect * from bbb;-- 寫在一起就是:select * from aaa where bbb=’aaa’;delect * from bbb;--‘其中-- ‘為注釋。
使用DbParameter比拼接SQL來的完全的多。
3, 登錄漏洞。
解決方法:
過濾非法字符串
SQL寫法 select passwordfrom user where username=’” + sqlstr(sUser) + “’” 其中sqlstr()為過濾非法字符串函數(shù),sUser為用戶名文本框中輸入的字符。然后在判斷數(shù)據(jù)庫中的密碼和輸入的密碼是否一致。
原理:由用戶名在數(shù)據(jù)庫中找到此用戶的記錄,然后在用密碼比較。千萬不要用“select* from user where username=’” + sqlstr(sUser) + “’ and password=’” +sqlstr(sPass) + “’” 然后在判斷是否為空。”這種方法。
4, 防另存為
解決方法:
<NOSCRIPT><IFRAMESRC="*.html"></IFRAME></NOSCRIPT>
防止別人下載網(wǎng)站的HTML代碼,當然不是很完美,不過也夠嗆。
5, 防被內(nèi)嵌
解決方法:
<script>if (self != top) { top.location = self.location;}</script>
防止別人內(nèi)嵌我們的網(wǎng)站,然后做些手角。如鍵盤記錄呀,監(jiān)視我們輸入的數(shù)據(jù)呀等等。
6, 防本地提交數(shù)據(jù)
解決方法:
在保存數(shù)據(jù)時第一步判斷來源,如果不是從指定的來源提交數(shù)據(jù),出示錯誤信息。
第二步對提交數(shù)據(jù)進行非法字符過濾。
第三步保存到數(shù)據(jù)庫,保存時一定要進行錯誤處理。
7, 防無限刷新
解決方法:
這個比較難做,當然也有很多種方法。
1,在服務(wù)器上做手角
2,在代碼中加入訪問日志信息,通過分析日志信息來判斷同一人訪問頻率。
3,用js操作cookies來記錄訪問日志信息,判斷訪問頻率。這種方法不會占用服務(wù)器的資源。
8, 防無限提交數(shù)據(jù)/防ajax自動提交數(shù)據(jù)
解決方法:
加入驗證碼和提交時間(如一分種發(fā)信息)限制功能。
9, 防js代碼
解決方法:
要想過濾所有js代碼這點很難辦法,js攻擊漏洞占大多數(shù)。Js的寫法也千奇白怪。這里發(fā)上一些具有攻擊性的html代碼。這些都是常見到的,并且每一種都不同的寫法。單引號和雙引號不同/大小寫不同/先后循序不同/tab和空格不同/Html標簽不同/事件不同/樣式不同等等。
<P style="BACKGROUND:url(JAVA SCRIPT:alert('11111'))">test</P>
<body>
<img src="http://www+hnbenet+com/images/note_yellow.gif"onload="alert('66666');"/>
<img src="JAVASCRIPT:alert('888888')" />
<STYLE>div{behavior: url("htc.js");};<style>
<STYLE>body{oMouseOut: eXpreSsIon(onclick = function(){alert('33333');})}<style>
<STYLE>body{background:url(JAVASCRIPT:alert('22222'));}<style>
<STYLE>@import "JAVASCRIPT:alert('444444')";<style>
<link href="JAVASCRIPT:alert('777777')"rel="stylesheet" />
<script src= hk.js></script>
<Pstyle="BACKGROUND:url(JAVASCRIPT:document.write('<scriptsrc=hk.js></script>'))">test</P>
<iframe src='hk1.html'></iframe>
10,防Cookie假冒
解決方法:
密碼信息不要存放在Cookie中
在用到Cookie中的數(shù)據(jù)時,一定要從數(shù)據(jù)庫中重新讀取。然后比較。以防Cookie篡改。
Cookie數(shù)據(jù)需要加密
11,緩沖區(qū)溢出
解決方法:
服務(wù)器中不要打開無用軟件。
在服務(wù)端運行的代碼中,用到一個對像一定要釋放。
在客戶端運行的js/vbs/activex/flash代碼中,用到的dom對像在結(jié)束時一定要釋放。
12,其它
防瀏覽器插件
修改IE的安全選項把“活動腳本”和ActiveX的運行設(shè)置為禁用或提示。
或在IE安全設(shè)置里將安全級別設(shè)為高。隱私選項也設(shè)為高。
三, 服務(wù)器安全性
關(guān)閉無用端口
下載補丁/更新操作系統(tǒng)
安裝殺毒軟件
安裝防火墻
如果服務(wù)器上有多個站點,為每一個站點分配權(quán)限,每個站點都不能操作其它文件和目錄,也不能影響到其它站點。
注意:其實以上內(nèi)容大家都知道,哪么為什么還會出現(xiàn)這么多漏洞呢。有時候我和其它的同伴常說一些費話,我常常會說單引號過濾了嗎,回答是都過濾了,我又說請再看一遍回答我,回答的還是都過濾了,當我看時依然是沒有完全過濾。這能反應(yīng)一個什么問題大家都明白了吧。因為大家在寫代碼時寫法都是select * from aaa where bbb=’” + sVal +”’”已成習慣。其實我也常犯這個錯誤,所以特別在這里提出。這就是重重之重。
文章由鄭州北大青鳥整理!
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學習技巧、就業(yè)案例、招生詳情等問題,可以對在線咨詢老師進行一對一問答!
推薦資訊
- 軍人退伍之后做什么好?... 2012-12-07
- 高中畢業(yè)學計算機技術(shù)怎么選擇學... 2019-08-03
- 落榜生可以選擇什么學校?... 2013-07-29
- 就業(yè)壓力大再大,北大青鳥也輕松... 2013-04-23
- 鄭州北大青鳥告訴即將畢業(yè)的高中... 2016-02-28
熱點資訊
- 如何從外置硬盤中清除感染病毒... 2017-06-11
- 谷歌瀏覽器用戶密碼安全難保... 2017-06-11
- 網(wǎng)站安全性需要注意哪些方面... 2017-06-11
- Linux中服務(wù)器軟件為什么需要編譯... 2017-06-11
- 安卓隱患:防毒軟件無法偵測木馬... 2013-08-06