ASP.NET 高級編程基礎第六篇—開發原則1


前言: 從這篇我們開始學習web開發原則,所謂沒有規矩,不成方圓,在我們編程這個領域也是一模一樣的,我們需要對我們的編程設計很多規則,當然這些規則都是你經過了這么多年提煉出來的我們必須注意的事項,如果我們不注意的話我們的網站將會遇到很大的漏洞,下面我就開始說一下Web開發中的一些基本原則。

  1. Web開發的一些基本原則

(1) 最小權限原則,只允許用戶做什么,而不是”不允許用戶做什么”。

(2) 瀏覽器查看的是服務端代碼的執行輸出文本,除非服務器有漏洞,否則瀏覽者無法查看服務端的aspx.cs代碼,目標另存為也是保存的aspx的執行結果,而看不到aspx.cs的源代碼,js,html是被輸出到瀏覽器上執行的,因此無法禁止瀏覽器查看查看JS,Html。

(3) C#代碼是運行在服務器端的,JS代碼是運行在瀏覽器客戶端的。

(4) 能在瀏覽器端完成的事情,就不要到服務端去完成。

(5) 客戶端是不可信的。

  1. 原則1

(1) C#代碼是運行在服務器端的,JS代碼是運行在瀏覽器客戶端的。

(2) 按鈕確認提交的實現在Button控件的onclick中寫入如下代碼:

 1) <input type=”submit” name=”delete” value=”刪除” onclick=”return confirm(‘真的要刪除嗎?’)” />

 2) 代碼是運行在瀏覽器端的,和服務器端沒有關系。

(3) 在服務端”彈出消息窗口”

 1) response.write(”<script type=’text/javascript’>alert(“刪除成功!”)</script>”);

 2) 並不是真的是在服務器端運行的,只是生成了JavaScript代碼到瀏覽器端,瀏覽器會在解析文檔的時候運行alert,不推薦用這種寫法,讀懂即可,推薦用后面講的RegisterClient.startupScript。只是渲染到瀏覽器端,所以並不會得到對話框關閉服務端的代碼才會執行下去。

 3) 對於服務器端的代碼來說,生成一堆HTML代碼就是一堆字符串,沒有任何意義,只有到了瀏覽器端執行才會有意義。

(4) 案例1:在項目中添加對System.Windows.Forms的引用,然后MessageBox.Show(“Hello”);用Cassini.Dev.exe啟動測試程序讓別人的電腦遠程測試,證明c#代碼是運行在服務器端的。

注:在Web窗體上面拖放一個控件,引入命名空間,將控件起名為MessageBox.Show(),雙擊此控件在其事件下面寫入如下代碼:

MessageBox.Show("我是服務器上面的");

(5) 127.0.0.1是回環地址(LoopBack),就是表示通過回環地址訪問本機,哪怕是本機外網地址也訪問不了,localhost就是127.0.0.1的別名,是無法在外部訪問的。

(6)0.0.0.0任意IP(Any IP),不用寫死綁定的IP了,通過任何一個網卡都可以訪問網絡程序。

(7) 案例2:用asp.net,可以再訪問者磁盤中創建木馬文件,在木馬文件中寫入讓別人關機的文件,這樣的話當別人單擊的時候就會強制關機啦,嘿嘿,代碼寫法如下:Fille.WriteAllText("c:/muma.exe", "我是木馬,我要你關機,你馬上關機");用CassiniDev.exe啟動測試程序讓別人遠程測試(VS內置的服務器不能遠程測試),exe生成到了服務器的磁盤中,而不是訪問者的磁盤中,因為C#代碼是運行在服務器端的,而不是瀏覽器中的,瀏覽器得到的只有返回HTML的內容。

(8) 案例3.兩個人分別訪問點擊自增1的界面,互不影響,因為不同用戶的變量內容是隔離的。

 1) 拖放一個Button和Label控件,雙擊Button控件,寫入如下代碼:

 1     protected void Button1_Click(object sender, EventArgs e)
 2 
 3     {
 4 
 5         int i = Convert.ToInt32(Label1.Text);
 6 
 7         i++;
 8 
 9         Label1.Text = i.ToString();
10 
11     }

 

  1. 原則2

(1) 能在瀏覽器端完成的事情我們就不要去服務器端完成。

(2) 按鈕隱藏一個控件就不要再服務端寫代碼,在客戶端用JavaScript,dom來操作就可以,比如要操作數據庫,顯然是在瀏覽器端做不到的,這時候就要寫服務端代碼,校驗用戶名,密碼這樣的操作可以放在瀏覽器端(用戶名密碼都是寫死的),技術上可以,但是這樣安全性較差,因此必須放到服務器端。

(3) 拖放一個Button和TextBox控件,設置Button控件為隱藏

1 TextBox1.Visible = false;
2 
3 <input type="button" value="客戶端隱藏" OnClick="document.getElementById('TextBox1').style.display='none'" />

 

注釋:開發原則1我們就說到這里了,下節博客是web開發原則2,希望我們共同來學習,我們的群號是:159227188,歡迎大家在這里交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM