ASP.NET初級學習2

來源:互聯網
上載者:User

HTTP協議簡介

1.web開發是和http協議打交道的,必須瞭解http協議。http協議版本:http/0.9、http/1.0、http/1.1版本

http協議分析工具

1.DebugBar,Http(s)標籤的內容。免費的,只能分析當前瀏覽器中的內容。

HttpWatch,收費的,也是只能分析當前瀏覽器的內容。推薦使用。

http協議的幾個概念:

1.      串連(connection):瀏覽器和伺服器之間傳輸資料的通道,一般請求完畢就關閉,不會保持串連

2.      請求(Request):瀏覽器向伺服器發送的“我要。。”的訊息,包含請求的類型,請求的資料、瀏覽器的資訊(語言、瀏覽器的版本等)

3.      相應(Response):伺服器對瀏覽器請求的返回的資料,包含是否成功,錯誤碼等。

Http響應碼 瀏覽器向伺服器發出請求,伺服器處理可能是成功,可能是失敗、可能沒有許可權訪問等原因,伺服器會通過響應碼來告訴瀏覽器處理結果。

HTTP/1.1 200 OK 200是狀態代碼:表示請求處理成功。

301表示永久轉移。    302 Found暫時轉移   400  錯誤請求 發出不符合http協議的請求

 404 頁面找不到。     307 臨時重新導向       401 未認證  一般需要輸入使用者名稱密碼才能登入

 500內部伺服器錯誤。 403 :Forbidden 禁止訪問

網頁中如果有圖片,css,js等外部檔案的話,圖片,css,js都在單獨的請求中,也就是並不是頁面的所有內容都在一個請求中完成,而是每一個資源一個請求。

一般情況下,只有瀏覽器請求伺服器端,伺服器端才有給瀏覽器相應資料,不會主動向瀏覽器推送資料,這樣是安全考慮,也是提高伺服器的效能。如果要伺服器像用戶端瀏覽器推送資料,則需要使用ServerPush等額外技術。

http是“請求—響應”工作方式,因此頁面會不斷的重新整理,如果不希望頁面重新整理則要使用AJAX等技術。

多線程下載基於斷點續傳。

請求響應模型的例子

超連結和提交表單的區別,一個是直接存取,一個是有postback。

 

Web開發的一些基本原則

1.最小許可權原則。只允許使用者做***,而不是“不允許使用者做***”

2.瀏覽器看、查看的是伺服器端代碼的執行輸出的文本,除非伺服器有漏洞,否則瀏覽者無法看到伺服器端的aspx、cs代碼,目標另存新檔也是儲存的aspx的執行結果,而不是aspx的原始碼。Js、html是被初入到瀏覽器上執行的,因此無法禁止瀏覽者查看js、html。

 C#代碼是運行在伺服器端的,js代碼是運行在瀏覽器端的。可以在用戶端執行的代碼就放在用戶端執行,例如按鈕確認提交在button的onclientclick="return confirm('真的要刪除嗎?')。運行在瀏覽器端。

還有一種看起來像是在伺服器端彈出對話方塊。但其實也是在瀏覽器中執行的:

Response.Write(“<script>alert(‘刪除成功!’)</script>”);其實這段代碼,是在伺服器端將段字串寫到瀏覽器中的,瀏覽器執行時識別出這是JavaScript代碼,就彈框了。其實伺服器端根本不知道這是一句彈框代碼,也不會阻塞伺服器端代碼繼續執行下去。(不推薦使用,推薦使用RegisterClientStartupScript)

真正在伺服器端彈出對話方塊也沒有意義:比如:DialogResult dr= MessageBox.Show("伺服器端彈出?對話方塊,要先添加winForm的引用,怎麼我上次那麼傻呢!這樣都沒想到。","傻逼?",MessageBoxButtons.YesNo);

為什麼會沒有意義呢?很簡單,我們的網站是供人訪問的,但是如果每次訪問後彈出的提示框都在伺服器端,那麼用戶端根本就不會知道,而且伺服器端也會因為彈出太多的框框而卡死!!

按鈕隱藏一個控制項就不要寫伺服器端代碼,在用戶端用JavaScript、dom來操作就可以。校正使用者名稱,密碼這樣的操作可以放到瀏覽器端,但是安全性差,因此還是必須放到伺服器端。

用戶端驗證不能代替服務端驗證

像網銀金額校正,不單單在用戶端要校正,伺服器端也要校正,用戶端校正是為了很好的客戶體驗,快速發現問題,不必要再執行下去,伺服器端是最後一次把關,防止惡意請求

不要把敏感性資料,演算法寫在瀏覽器端

不要把機密資訊儲存在html中

伺服器端的控制項visible=false時,控制項定義根本不會畫到用戶端瀏覽器中,而用戶端控制項則不同,只是把display屬性設為none。

 

XSS漏洞

不要在一個頁面中直接請求一個字串然後顯示成html代碼。你可以將請求的字串經過html編碼後顯示出來,而不是讓他執行html代碼

使用者發貼時也存在xss的問題。將發帖內容儲存到一個文字檔中。

我們可以對請求的資料做檢測,如果請求資料中有<等就認為是惡意攻擊,禁止提交,aspx預設就是才用這種策略,這樣做的缺點是不能在論壇中html代碼的文章,這樣不好。

  因此,更好的處理方法是將html內容原樣顯示出來,而不是以html的方式顯示出來。使用HttpUtility HtmlEncode就可以將字串中的特殊字元串顯示出來,也就是不把<script>當成定義指令碼的標籤,而是當成&lt;script&gt;這樣可以在頁面中直接顯示出來的內容。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.