天天看點

Web開發原則學習Web開發原則

Web開發原則

一 最小權限原則

隻允許使用者做***,而不是“不允許使用者做***”。

(總有一些非法權限是沒有考慮到的,是以應該隻配置設定給使用者需要的權限)

了解解釋:

浏覽器檢視的是伺服器執行輸出的文本,除非伺服器有漏洞,否則浏覽者無法檢視服務端的代碼。

二 能放在用戶端的就不要放到伺服器端

比如隐藏一個控件,

可以直接在用戶端用

οnclick=”document.getElementById(“xx”).style.display=’none’”
           

而不用在服務端執行

xx.visible=false
           

三 不可信的用戶端校驗

①用戶端的驗證不能代替服務端驗證,因為浏覽器可以禁用JS

示例:在銀行系統中如果你的餘額不足100,設定不能取大于餘額的金額。

用戶端:

<form id="form1" runat="server" οnsubmit="if(parseInt(document.getElementById('TextBox1').value,10)>parseInt(document.getElementById('Label1').value,10)){alert('餘額不足');return false;}">
           

服務端:

Label2.Text="取款成功,金額:"+TextBox1.Text;
           

分析:

這裡使用的是JS方式來校驗取款金額是否合理的。但當使用者禁用了JS之後就可以不管多少,自由取款了。這個校驗就完全沒有用了。

IE可以通過(Internet選項->安全->自定義級别->腳本->活動腳本->禁用)來設定禁用script。

運作結果可自行設定檢驗一下效果。

是以應該改為下面的伺服器校驗:

int i = Convert.ToInt32(TextBox1.Text);
        if (i > 100)
        {
            Label2.Text = "金額大于100不可取";
        }
        else
        {
            Label2.Text = "取款成功"+i;
        }
           

②不要隐藏機密資訊到HTML

這個很好了解,比如不要把使用者名密碼的校驗直接寫在JS中,因為JS等代碼都是可以直接看到的。要寫也應該寫在外部的檔案夾中。以路徑的形式添加進來使用。

③XSS(Cross Site Scripting)漏洞

簡而言之就是利用網頁本身實作的漏洞,通過腳本來達到我們自己的目的。 這裡通過一個例子更好的來了解,這個問題。

示例:實作添加評論與顯示評論的功能。

添加評論

Add.aspx

<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="添加評論" />
    </form>
</body>
           

Add.aspx.cs

protected void Button1_Click(object sender, EventArgs e)
    {
        File.AppendAllText("H:/1.txt",TextBox1.Text+"<br/>");
    } 
           

檢視評論

View.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        string s = File.ReadAllText("H:/1.txt");
        Response.Write(s);
    }	
           

Add

輸入: 你好呀!

View運作結果:

Web開發原則學習Web開發原則

Add 輸入: <script type="text/javascript">alert("恭喜你中獎了,請到www.nihao.com領取獎品!")</script>

Web開發原則學習Web開發原則

在此處添加:ValidateRequest="false"

Web開發原則學習Web開發原則

View運作結果:

Web開發原則學習Web開發原則

處理方法: 1.目前aspx中預設隊請求的資料進行了校驗,如果資料中有<、/等有潛在XSS攻擊的字元,則會報錯。 2.在顯示的時候對内容進行HTMLEncode。 将View.aspx.cs改為:

protected void Page_Load(object sender, EventArgs e)
    {
        string s = File.ReadAllText("H:/1.txt");
        Response.Write(HttpUtility.HtmlEncode(s));
    }
           

 或者使用Literal控件顯示,其自帶Encode屬性。

Web開發原則學習Web開發原則