代碼編寫中會遇到的安全性問題

?

一、常用的攻擊手段

?

1.腳本注入

漏洞描述:

腳本注入攻擊在通過瀏覽器使用用戶輸入框插入惡意標記或腳本代碼時發生。

如:某個輸入框允許用戶向數據存儲中插入內容,如果將一段js腳本插入其中,則當其他用戶使用或瀏覽此數據存儲中的內容時,則那段js代碼會被激發執行。如果此代碼執行后果可想而知。

?

解決方案:

當向數據存儲插入數據之前,進行代碼過濾,屏蔽其中的惡意字符。

?

?

2.跨站點腳本攻擊

漏洞描述:跨站點腳本攻擊非常類似于腳本插入攻擊,當惡意腳本通過其他站點動態生成的web頁面插入到web瀏覽器時發生。在這種攻擊中,黑客的目標不是我們的站點,而是我們的用戶。

如:當某個搜索頁面通過get的形式傳遞搜索數據時(如:xxx.com?search=XXXXX),當在數據庫沒有查詢到此內容,會在頁面上將用戶所搜索的信息顯示出來(如:沒有找到XXXX),那么,如果黑客在search后邊加上js代碼(如:document.cookie)則后果可想而知。

解決方案:

對用get所傳遞的參數進行代碼過濾,屏蔽其中的惡意字符。

?

?

3.Sql注入

漏洞描述:簡單的說,sql注入就是將sql代碼傳遞到應用程序的過程,但不是按照應用程序開發人員預定貨期望的方式插入。由于應用程序設計很差,常常出現這種sql注入,它僅僅影響使用sql?字符串構建技術的應用程序。如:

?

解決方案:

對數據庫操作前,屏蔽用戶所提交的字符串中sql關鍵字。

?

4.Sql union攻擊

漏洞描述:

攻擊者也可以使用sql的union語句來獲得更多的數據。盡管sql union攻擊很難,但仍然是可能的。例如帶有sql的union語句的注約束是:兩個查詢應該從匹配的查詢中返回相同的列號,表達式或聚集函數、列的數據類型。

?

?

5.對腳本注入、跨站腳本攻擊、sql注入、sql? union攻擊的總結:

上述的漏洞都是系統常見的漏洞,也是容易注意不到的漏洞,上述的漏洞修補起來非常簡單,只需要兩端字符串替換代碼即可搞定,但要注意代碼的使用位置,不要在沒有必要的地方使用,否則會增加系統的額外負擔。

上述漏洞的具體防范措施:

5.1驗證內容

如果想避免我們在前面已介紹的幾種類型的攻擊,就必須記得在處理數據的輸入前腰先驗證它們。這種驗證是一種很簡單的驗證,如檢查所輸入的內容是否為數值,是否為16或是大于16的值,或者確認用戶僅可輸入a~z,A~Z,0~9的有效字符和一些特殊的字符。

5.2篩選用戶輸入

當接收到來自非信任源的不恰當輸入時,并不一定要拒絕該輸入。在這種情況下,篩選輸入是最好的辦法。

5.3編碼輸入內容

在有些情況下是允許客戶輸入如<script>等這樣的特殊字符的,但是這些字符時不允許執行的,那么就要對一些特殊字符重新編碼。如 < 編碼為&lt;字符。(Server.HtmlEncode(string))

5.4避免跨站點的腳本攻擊

避免跨站點的腳本攻擊的唯一方法就是在處理用戶輸入之前全面徹底地驗證輸入內容。

?

?

6.隱藏窗體字段

漏洞描述:開發人員有時會在頁面上使用隱藏窗體用來保存一些數據。但是這些數據可以被任何人查看。只需要用戶有一點點的html知識,就可以在本地保存html頁面,修改頁面中的值,在重新經頁面提交給服務器。

解決方案:

始終使用session對象檢查用戶是否有一個有效的會話。

不再隱藏字段中保存任何敏感信息。如果不能避免這樣做,應該在隱藏字段保存數據時,在加密的重提中保存會話密鑰和時間戳。這樣有助于驗證來自瀏覽器的信息。

要想辦法處理隱藏字段中的數據被刪除時的情況

在客戶端檢查參數的長度和數據類型。

在服務器端重新進行驗證。

?

?

7.Cookies

漏洞描述:

Cookies是在http請求和http相應操作期間被設置為http題頭的一小塊信息。Web開發人員也使用cookies在客戶端存儲數據。在cookies中保存的數據可能是會話密鑰、瀏覽器行為、購物車等內容。黑客可以利用cookies中的信息,進行非法操作。

解決方案:

不在cookies中保存任何敏感信息。

如必須在cookies中保存敏感信息,則使用加密技術,對cookies內容進行加密,同時還要考慮到cookies內容被修改或刪除的情況。

在cookies中保存敏感信息最佳的方式是使用窗體身份驗證來創建加密的身份驗證票據。

使用ssl來保護cookies不被竊取。但是ssl只能保護服務器與客戶端之間的通信信息。無法保護存在客戶端的信息。

?

?

?

8.url

漏洞描述:

許多開發人員是用url從一個頁面向另一個頁面傳遞信息。由于傳遞的信息是基于文本的,而且他在瀏覽器中是可見的,所以內容很容易被篡改。

解決方案:

不在url包含敏感信息。應該將所有敏感信息都保存在服務器中,或者使用加密的格式設置命該信息并在服務器上驗證返回的結果。

編碼url,也就是說,把所有參數都放在同一個同一個元素當中,在對此元素內的內容進行編解碼。

?

9.視圖狀態

漏洞描述:

所有asp.net服務器空間都保存在一個叫做_viewstate的隱藏變量中。視圖狀態信息是以編碼的字符串形式保存在隱藏的變量中。當從客戶端向服務器端發送信息的過程中,信息有可能被黑客截獲,造成數據的泄露。

?

解決方案:

使用ssl加密傳輸過程中的信息。

?

?

10.控制錯誤信息

漏洞描述:

處理異常的有效辦法不是向用戶展示任何有關異常的有用信息,而是將異常記錄到時間日志中,并顯示一個能夠像忠實用戶提供更多可用信息的普通錯誤信息。利用這種方式,可防止信息的泄露,也能避免遭到惡意錯誤信息的攻擊。

?

解決方案:

使用單獨的錯誤頁面,顯示錯誤信息,也就是說當程序發生錯誤時,轉到已經定義好的錯誤頁面上去。

?

11.禁用調試和跟蹤

漏洞描述:

這兩種功能在開發周期中很重要,但在產品環境中是沒有意義的。如果開啟調試和跟蹤有可能暴露重要信息,如數據庫的鏈接字符串。

解決方案:

在web.config和iis中關閉調試和跟蹤。

?

上述說的是在程序編寫過程中能夠遇到的系統安全性方面的內容。

?

?

?

二、部分解決方案

  1. 1.?????? 防暴力破解

1.1漏洞描述:用戶登錄階段通過破解字典等反復登錄,用來破解用戶密碼的方式。

1.2解決方案:

?? (1) 使用頁面驗證碼,應用驗證碼是為了防止通過程序方式,自動去填寫信息,然后自動發送給web服務器而欺騙服務器去其進行注冊或登錄。

?? (2) 限制ip和mac地址,有些圖片驗證碼是可以通過破解程序讀取的,所以當驗證碼失效后,則通過限定ip或mac地址錯誤登錄的次數(當某個ip或mac地址的連續登錄錯誤的次數超過n次后,則停用此用戶)來限定。

?

2.登錄/注冊安全

2.1 漏洞描述:用戶登錄或者填寫登錄信息,向服務器端發送信息,有可能此信息被截獲,導致用戶的信息暴露。信息暴露分為(1)客戶端信息暴露,如:客戶端有病毒程序,自動記錄用戶所填寫信息。(2)客戶端向服務器端發送信息途中,信息被截獲。(3)服務器端有病毒程序或被黑客控制等,客戶信息在服務器端暴露。

2.2 解決方案:

2.1 客戶端解決方案

?? (1)在頁面上使用虛擬鍵盤,并且鍵盤數據生成順序隨即排列。這樣用戶輸入信息只需要點擊鼠標即可,這樣可以防止客戶端病毒程序記錄鍵盤所按內容。

?

2.2傳輸過程中解決方案

(1)使用https協議進行數據的加密傳輸,這樣可以保證在傳輸過程中的安全性。

(2)使用獨立編寫的客戶端加密程序,在客戶端將所發送的信息進行加密。

(3)使用外部設備,如加密key進行數據的加密。如:工行u盾。(原理:用戶唯一身份信息經256位高強度加密后以電子證書的形式存入一個特殊的U盤內,該U盤只讀且防拷貝,使用時,電腦發出身份認證信息,U盤接收后,將信息導入自身,進行解密運算后與證書內信息配對,配對成功后返回確認信息,整個解密、配對過程在U盤內部完成。)

?

3.上傳漏洞

漏洞描述:黑客可以利用系統提供的上傳功能,向服務器中上傳惡意文件。用以控制服務器或者導致系統信息泄露。

?

解決方案:

  1. 限制擴展名。如只可以上傳jpg,png,doc,rar等。
  2. 對上傳文件的文件都標識進行驗證。如:255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
  3. 對附加文件進行檢測。有一種技術是“文件隱藏技術”,其實就是利用windows下的一條命令合并兩個文件。
  4. 上傳路徑不能動態生成。此為iis6下的一個漏洞。當用戶注冊為一個名為 1.php的用戶并上傳一個改名為1.jpg的木馬后,我們得到此訪問路徑為:http://xxx.xxxx.com/1.php/1.jpg 這樣,這個1.jpg就會以php的后綴名運行。

?

?

?

?

三、高級內容

?

1. 秘密的存儲位置

系統的一些敏感信息,如數據庫的鏈接字符串等。如果存儲的位置不當,則容易引起數據的泄露。如,存儲在頁面中,存儲在后臺編碼中,存儲在.config中,存儲在受保護的.config中,存儲在內存中,使用散列技術存儲密碼,使用data protection api 存儲秘密。

?

2. 保護數據庫的訪問權限。

數據庫是最容易受到攻擊的地方,如果對數據的訪問權限設置不當(權限過高),或者訪問賬戶泄露,都可造成嚴重的后果。

?

解決方案:

1.? 數據庫賬戶。在給用戶分配數據庫權限是,盡量給最小的權限,這樣能將分先降到最低。

2.? 限制到數據庫的鏈接。保護數據庫最好的方法是不要將其放到公共區,這樣可以保證數據庫不能從外部進行訪問。

3.將秘密存儲在.net組建中。 用來保護數據庫鏈接最好的方式是將期存儲到.Net組件中或提供服務的com中。但是有些權限是可以訪問dll文件的,當對dll文件反編譯后,仍然是可以看到內容的。

?

?

3Asp.net安全架構

Asp.net安全架構為幾個關鍵的安全過程包括身份驗證,授權,假冒和加密提供了必須功能

?? 1.身份驗證—誰到了那里?訪問站點的用戶身份是什么?

2.授權—您的許可級別是什么?訪問站點的用戶是否被授權他所請求的資源?

3.假冒—您準備假冒什么角色?用戶可以利用他們的標識、或者asp.net 程序的標識或者一些其他的賬戶訪問這些權限嗎?

?

轉載于:https://www.cnblogs.com/dongguang506/archive/2010/09/16/1828033.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275904.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275904.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TypeScript 原來可以這么香?!

先問一個問題&#xff0c;JavaScript有幾種數據類型&#xff1f;number、string、boolean、null、undefined、symbol、bigint、object其中 bigint 是 ES2020 新增的數據類型&#xff0c;而早在 TS3.2 時便成為 TS 的標準&#xff0c;其實還有好多 ES 標準是 TS 率先提出的&…

java8新特性stream深入解析

2019獨角獸企業重金招聘Python工程師標準>>> 繼續java8源碼的發燒熱&#xff0c;越看越是有充實的感覺。 數據時代下的產物 Java順應時代的發展推出的高效處理大量數據能力的api&#xff0c;它專注于對集合對象進行各種非常便利、高效的聚合操作&#xff0c;借助于同…

mysql內連接的自連接_mysql 內連接、外連接、自連接

一)內連接(等值連接)&#xff1a;查詢客戶姓名&#xff0c;訂單編號&#xff0c;訂單價格---------------------------------------------------select c.name,o.isbn,o.pricefrom customers c inner join orders owhere c.id o.customers_id;-------------------------------…

關于ASP.NET MVC

我是否要學習一下ASP.NET MVC呢&#xff1f;因爲從它剛發布的時候就已經初步的學習了一下&#xff0c;可是一直沒有堅持下來。不過心里對于這份惦記&#xff0c;又讓我始終放不下&#xff0c;看來應該抽個時間來系統的學習一下。 就這樣吧&#xff0c;把自己的博客當成微博來使…

版式設計與創意 pdf_戀愛與版式

版式設計與創意 pdfSince its beginnings, Libe?ration has been characterized by a very distinctive use of typeface, to such an extent that Libe? has put its mark on fonts from across different eras, appropriating these in a certain way.小號因斯它的起點&…

移動網站開發——標記語言

移動互聯網被稱為“第五次科技革命”&#xff0c;而隨著iPhone和Android等智能手機的日漸流行和iPad等平板電腦的出現&#xff0c;移動互聯網的潛力和趨勢也愈發顯現&#xff0c;針對移動設備的網站開發越來越受到關注&#xff0c;國內很多公司也開始重視面向所有移動設備的網站…

mysql適配器_MySQL適配器PyMySQL詳解

import pymysqlimport datainfoimport time#獲取參數host datainfo.hostusername datainfo.usernamepassword datainfo.passworddatabase datainfo.dbprint()#測試數據庫連接def testconnect():#打開數據庫鏈接db pymysql.connect(host,username,password,database)#使用c…

獲取當前Tomcat實例的端口

有時需要在當前代碼中獲取當前Server實例的端口號, 通過HttpServletRequest請求可以, 但有時也需要在沒有請求的情況下獲取到端口號. 用以下方法是可以獲取到的: public int getHttpPort() {try {MBeanServer server;if (MBeanServerFactory.findMBeanServer(null).size() >…

前端技術未來三年前瞻性思考

大家好&#xff0c;我是若川。今天推薦云謙大佬的一篇好文章&#xff0c;值得收藏。點擊下方卡片關注我、加個星標&#xff0c;或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列習慣從業務場景、用戶體驗、研發速度、維護成本四個維度來看框架等前端技術&a…

微信臨時素材接口_在接口中表達臨時性

微信臨時素材接口When interacting with today’s graphic user interfaces (GUI), we experience a sense of realism. As of now, certain aspects of realism (for example animations) create the appearance that user interface graphics behave in accordance with the …

程序員,當你寫程序寫累了怎么辦。

記得泡泡網的CEO李想說過這樣一句話&#xff0c;大體就是&#xff1a;做一件事情&#xff0c;一開始是興趣使然&#xff0c;然而當三分鐘熱度過去之后&#xff0c;就要靠毅力支撐自己來完成它。至少我到現在是能非常深刻的體會這句話。一開始再怎么喜歡做一件事&#xff0c;要想…

mysql 導致iis 假死_解決IIS無響應假死狀態

1 查看服務器iis的w3wp.exe對應的應用程序池在IIS6下&#xff0c;經常出現w3wp的內存占用不能及時釋放&#xff0c;從而導致服務器響應速度很慢。今天研究了一下&#xff0c;可以做以下配置&#xff1a;1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。2、設…

Swift 5將強制執行內存獨占訪問

Swift 5將帶來改進的Swift程序內存安全性&#xff0c;在程序的其他部分修改變量時&#xff0c;不允許通過其他變量名來訪問這些變量。這個變更對現有應用程序的行為和Swift編譯器本身都有重要影響。Swift 5將帶來改進的Swift程序內存安全性&#xff0c;在程序的其他部分修改變量…

GitHub 支持上傳視頻文件啦!

大家好&#xff0c;我是若川。今天周六&#xff0c;分享一篇熱點新聞。文章較短&#xff0c;預計5分鐘可看完。近日 Github 宣布支持了視頻上傳功能&#xff0c;意味著&#xff0c;大家在提 issue 時可以攜帶視頻了&#xff0c;這極大地提高了開發者和維護者的效率&#xff0c;…

ui設計 網絡錯誤_UI設計人員常犯的10個錯誤

ui設計 網絡錯誤重點 (Top highlight)1.不考慮范圍 (1. Disregarding scope)It’s not uncommon for designers to introduce features that will overcomplicate the development process while bringing no additional value to the application. Focusing on the business o…

灰色的生命

也許幸福從來沒有在我身邊也許是已經在我身邊但我抓不住,摸不著 你的出現讓我驚奇為我灰色的生命添上了從沒見過的色彩我不相信這一切都是我的 不相信總是害怕相信了之后卻要面對殘酷的現實 但為何你讓我相信所有抓住了希望卻又轉過身沒有離去但讓一切停止望著你不想說…

小程序 node.js mysql_基于Node.js+MySQL開發的開源微信小程序B2C商城(頁面高仿網易嚴選)...

高仿網易嚴選的微信小程序商城(微信小程序客戶端)界面高仿網易嚴選商城(主要是2016年wap版)測試數據采集自網易嚴選商城功能和數據庫參考ecshop服務端api基于&#xff2e;ode.jsThinkJSMySQL計劃添加基于Vue.js的后臺管理系統、PC版、&#xff37;ap版項目截圖功能列表首頁分類…

前端菜鳥筆記 Day-5 CSS 高級

文章大綱來源&#xff1a;【Day 5】CSS 高級 CSS 選擇器CSS 拓展CSS 單位CSS 參考手冊CSS 選擇器 內容引用&#xff1a;CSS 選擇器 元素選擇器 html { ... } 復制代碼選擇器分組 h2, p { ... } 復制代碼類選擇器 .important { ... } p.warning { ... } .important.warning { .…

推薦幾個干貨超多助你成長的前端大佬

不得不說&#xff0c;如今比前些年學習資料多很多了。現在的前端公眾號也挺多的&#xff0c;這里推薦幾個前端大佬運營的公眾號&#xff0c;都是聚焦前端垂直領域的優質公眾號&#xff0c;關注這些公眾號至少可以&#xff1a;1、了解現在前端技術發展情況和未來發展趨勢&#x…

背景圖片_背景

背景圖片A designer’s journey is one that’s littered with many portfolios. Many of which have been reduced to a mere 404 error page, an abandoned link or another archive in the folders. Recently, while updating my portfolio, all the forgotten versions tha…