日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Asp.Net基础 - 9.Web开发原则

發(fā)布時(shí)間:2023/12/2 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Asp.Net基础 - 9.Web开发原则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄:

9.1.Web開發(fā)的一些基本原則

9.2 原則一
?? 9.2.1 C#代碼是運(yùn)行在服務(wù)器端的,JS代碼是運(yùn)行在瀏覽器客戶端的

?? 9.2.2 在服務(wù)器端“彈出消息窗口”

?? 9.2.3 案例說明(客戶端與服務(wù)端互不影響)

9.3 原則二

9.4 原則三

?? 9.4.1 客戶端驗(yàn)證不能代替服務(wù)端驗(yàn)證

9.1.Web開發(fā)的一些基本原則


最小權(quán)限原則。只允許用戶做***,而不是“不允許用戶做***”
● 瀏覽器查看的是服務(wù)端代碼的執(zhí)行輸出的文本,除非服務(wù)器有漏洞,否則瀏覽者無法查看服務(wù)端的aspx、cs代碼,目標(biāo)另存為也
是保存的aspx的執(zhí)行結(jié)果,而看不到aspx的源代碼。js、html是被輸出到瀏覽器上執(zhí)行的,因此無法禁止瀏覽者查看js、html。

?

9.2 原則一


?

9.2.1 C#代碼是運(yùn)行在服務(wù)器端的,JS代碼是運(yùn)行在瀏覽器客戶端的

客戶端確認(rèn).aspx

<form id="form1" runat="server"><div><asp:Button ID="Button1" runat="server" OnClientClick="return confirm('真的要?jiǎng)h除嗎?')" Text="刪除" OnClick="Button1_Click" /><br /><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div></form> 寫個(gè)button事件

protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "刪除成功!" + DateTime.Now;
}

在客戶端生成


● 能在瀏覽器端完成的事情,就不要到服務(wù)端去做。
● 客戶端是不可信的。

?

9.2.2 在服務(wù)器端“彈出消息窗口”

context.Response.Write("<script type='text/javascript'>alert('刪除成功')</script>");明白為什么即可。

并不是真的是在服務(wù)器端運(yùn)行的,只是生成了JavaScript代碼到瀏覽器端,瀏覽器會(huì)在解析文檔的時(shí)候運(yùn)行alert,不推薦用這種寫法,讀懂即可,推薦用后面講的RegisterClientStartupScript。只是渲染到瀏覽器端,所以并不會(huì)得到對話框關(guān)閉服務(wù)端的代碼才會(huì)執(zhí)行下去(在context.Response.Write("<script type='text/javascript'>alert('刪除成功')</script>")后設(shè)置斷點(diǎn))

?

?

9.2.3 案例說明(客戶端與服務(wù)端互不影響)

● 案例1、在項(xiàng)目中添加對System.Windows.Forms的引用,然后MessageBox.Show("Hello");,用CassiniDev.exe啟動(dòng)測試程序讓學(xué)生們遠(yuǎn)程測試。證明C#代碼是運(yùn)行在服務(wù)器端的。
● 127.0.0.1是回環(huán)地址(LoopBack),就是表示通過回環(huán)地址訪問本機(jī),哪怕是本機(jī)外網(wǎng)地址也訪問不了。localhost就是127.0.0.1別名。是無法在外部訪問。
● 0.0.0.0 任意IP(Any IP),不用寫死綁定的IP了,通過任何一塊網(wǎng)卡都可以訪問網(wǎng)絡(luò)程序。
● 案例2、偉大的ASP.Net,可以在訪問者磁盤中創(chuàng)建木馬文件
● File.WriteAllText("c:/muma.exe", "木馬(){葵花點(diǎn)穴手();降龍十八掌();熊貓燒香();}");
● 用CassiniDev.exe啟動(dòng)測試程序讓學(xué)生們遠(yuǎn)程測試(VS內(nèi)置的服務(wù)器不能遠(yuǎn)程訪問)。exe生成到了服務(wù)器的磁盤中,而不是訪問者的磁盤中,因?yàn)镃#代碼是運(yùn)行在服務(wù)器中的,而不是瀏覽器中的,瀏覽器得到的只有返回的HTML內(nèi)容
● 案例3、開兩個(gè)頁面分別訪問點(diǎn)擊自增1的界面,互不影響。因?yàn)闋顟B(tài)是保存在頁面的ViewState中的。

?

9.3 原則二


● 能在瀏覽器端完成的事情,就不要到服務(wù)端去做。
● 按鈕隱藏一個(gè)控件就不要寫服務(wù)端代碼,在客戶端用JavaScript、dom來操作就可以。比如要操作數(shù)據(jù)庫,顯然是在瀏覽器端做不到的,這時(shí)候就要寫服務(wù)端代碼。校驗(yàn)用戶名、密碼這樣的操作可以放到瀏覽器端(用戶名、密碼是寫死的),技術(shù)上可以,但是這樣安全性太差,因此必須放到服務(wù)器端。

?

9.4 原則3


? 客戶端是不可信的。
? 客戶端驗(yàn)證不能代替服務(wù)端驗(yàn)證
? 不要把敏感數(shù)據(jù)、算法寫在客戶端
? 不要把機(jī)密信息在html中隱藏的方式來保證安全
? 應(yīng)該是在機(jī)密頁面打開之前做權(quán)限校驗(yàn),而不是在一個(gè)頁面中做校驗(yàn),如果正確就倒向機(jī)密頁面,不正確就不導(dǎo)向。
? 不要輕信用戶提交上來的數(shù)據(jù)

?

9.4.1 客戶端驗(yàn)證不能代替服務(wù)端驗(yàn)證

客戶端校驗(yàn).aspx

<form id="form1" runat="server" onsubmit="if(parseInt(document.getElementById('TextBox1').value,10)>100){alert('最多只能取款100元');return false;}"><div><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div></form> 設(shè)置取款金額不能高于100元?
? 客戶端:<form id="form1" runat="server" οnsubmit="if(parseInt(document.getElementById('TextBox1').value,10)>100){alert('最多只能取款100元');return false;}">?
? 服務(wù)器端:Label1.Text = "取款成功,金額:"+TextBox1.Text;?
? <asp:Button來講,onclick是服務(wù)端事件,OnClientClick是最終生成到客戶端瀏覽器中的onclick代碼。?
?

? 如果禁用JavaScript(Internet選項(xiàng)→安全→自定義級別→腳本→活動(dòng)腳本→禁用,可以用“開發(fā)人員工具”),那么客戶端JavaScript校驗(yàn)就被禁用了,就可以取款多于100元了。?
? 在服務(wù)端也要進(jìn)行數(shù)據(jù)校驗(yàn),代碼見備注。

客戶端校驗(yàn).aspx.cs

protected void Button1_Click(object sender, EventArgs e){if (Convert.ToInt32(TextBox1.Text) > 100){this.Label1.Text = "禁止取款大于100";}else{this.Label1.Text = "取款成功" + TextBox1.Text + "";}}

客戶端校驗(yàn)是為了很好的客戶端體驗(yàn),服務(wù)器端校驗(yàn)是最后一次把關(guān),防止惡意請求。后面要講的ASP.Net Validation就是ASP.Net內(nèi)置的數(shù)據(jù)校驗(yàn)技術(shù),會(huì)在客戶端和服務(wù)器端同時(shí)校驗(yàn)

轉(zhuǎn)載于:https://www.cnblogs.com/tangge/archive/2013/04/24/3041038.html

總結(jié)

以上是生活随笔為你收集整理的Asp.Net基础 - 9.Web开发原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。