顯示具有 ASP.NET MVC 標籤的文章。 顯示所有文章
顯示具有 ASP.NET MVC 標籤的文章。 顯示所有文章

2013年3月5日 星期二

加強安全性

From Evernote:

加強安全性

@Html.AntiForgeryToken()
防止跨網域攻擊,也就是CSRF攻擊。
CSRF也就是「跨站請求偽造」,因為在ASP.NET程序中,我們的用戶信息都是存在與cookies裏面的,此時在用戶自己來說,程序已經可以算是裸奔了。正因為如此,Web程 序接受的正常客戶端請求一般來自用戶的點擊鏈接和表單提交等行為。可是惡意攻擊者卻可以依靠腳本和瀏覽器的安全缺陷來劫持客戶端會話、偽造客戶端請求。攻擊者盜用了你的身份,以你的名義發送惡意請求,以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私泄露以及財產安全。這就是CSRF攻擊。



Models常用屬性(Attribute)

From Evernote:

Models常用屬性(Attribute)

[Key]
顧名思義,Key就是代表主鍵
或是在主鍵名稱只要有Id型別為int程式自動會將他視為主鍵

[Required]
不可為空,當有些預設是可為空的欄位,就必需加上這個屬性,他才會變為不可為空。
反過來的話,則是在型別後面加上一個?

[MinLength(N)]
最小長度不底於N

[MaxLength(N)]
最大長度不超過N


[NotMapped]
排除資料庫對應,也就是說他是不會被加到資料庫的。


[DatabaseGenerated]
使用欄位不再被Entity Framswork追蹤這個屬性的變化。
我個人的理解是,這欄位以SQL Server為主,如果Server上有預設資料,則會以他的資料為主。






無法將 Lambda 運算式 轉換為型別 'string',因為它不是委派型別

From Evernote:

無法將 Lambda 運算式 轉換為型別 'string',因為它不是委派型別

今天遇到了一個奇怪的錯誤



覺的真的很奇怪,怎麼會無法下 db.Object.Include(c => c.Unit);

出現了這個錯誤。

解決的方法是加上
using System.Data.Entity;

加上這行就解決了。

讀取Json檔案到Object

From Evernote:

讀取Json檔案到Object

需要using的Path
using System. IO ;
using System. Xml ;
using System. Xml .Linq ;
using System. Runtime .Serialization . Json;


Test.json:
{"First":true,"AddDrop":false,"Abandon":false}

主要的程式碼:
string path = "../Test.json";
byte [] buffer = System . IO. File .ReadAllBytes (path);
using ( XmlReader reader = JsonReaderWriterFactory .CreateJsonReader ( buffer, XmlDictionaryReaderQuotas . Max))
{
     using ( XmlDictionaryReader xml = XmlDictionaryReader. CreateDictionaryReader ( reader))
     {
          DataContractJsonSerializer serializer = new DataContractJsonSerializer ( typeof( CourseSelectJsonModel ));     //重點在這行
          CourseSelectJsonModel courseSelectJsonModel =  serializer .ReadObject ( xml);
     }
}


Model:
public class CourseSelectJsonModel
{
     public bool First { get ; set ; }
     public bool AddDrop { get ; set ; }
     public bool Abandon { get ; set ; }
}