There is a new Thai restaurant in town!
" + "I ate there last night and it was fabulous.
" + "Make sure and check it out!
" + " " + " " + " " + " Pilar Ackerman" + " packerman@contoso.com" + " " + ""; // Gci request t+i URL c/ thE client.UploadStringAsync(new create?blogID=1234", UriKind.Absolute), postRequest); } Uri("http://blogs.contoso.com/post\ // Hóng sd kiPn UploadStringCompleted void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) { // HiEn th k*t qu6 nhAn đư8c if (e.Error != null) tb1.Text = e.Error.Message; else tb1.Text = e.Result; } 1.6 Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT Các h7n ch truy c p m7ng v8i silverlight Phiên b6n Silverlight hJ tr8 hai kiEu sau đE ?ng d/ng k*t nCi t+i máy ch4 tU xa: L+p WebClient nh1ng l+p HTTP có namespace System.Net – nh1ng l+p sc d/ng giao th?c HTTP or HTTPS cho giao ti*p m;ng Nh1ng l+p Sockets namespace System.Net.Sockets – nh1ng l+p cung cLp interface > m?c đB thLp c4a socket có thE đư8c sc d/ng rBng mBt cách rBng rãi giao ti*p m;ng ” c6 hai trư7ng h8p trên, cXn ph6i cung cLp b6o mAt ngăn chIn ?ng d/ng Silverlight k*t nCi t+i tU k*t nCi không đư8c phép Nh1ng mCi đe do; tLn công tU m;ng bao gVm: TLn công tU trCi d.ch v/ (DoS) – MBt sC lư8ng l+n máy tU xa đư8c sc d/ng nhom m/c tiêu tLn công vào mBt trang web đE m/c tiêu không thE request d.ch v/ h8p lP TLn công thay đri thông tin DNS – Sc d/ng DNS đE qu6n lý máy ch4 cAp nhAt l;i tên máy ch4 t+i đ.a chW IP c4a n;n nhân, b>i vAy cho phép truy cAp sg vào máy ch4 khác vào máy ch4 thdc sd c4a website Reverse tunnel attack – Use a remote client’s outgoing connection as a back tunnel to the client’s private network Các sách b6o mAt hP thCng k*t h8p Silverlight đư8c thi*t k* đE ngăn chIn mCi đe dOa m;ng Ngồi ra, hP thCng sách nhom m/c đích cung cLp cho qu6n tr viên kiEm soát nhi:u nguVn ldc tU xa mà khách hàng đư8c phép đE k*t nCi đ*n Trư+c thi*t k* cho m;ng có kh6 br sung gi+i h;n k*t nCi đ*n máy ch4 c4a trang web hoIc web gCc Đi:u có nghĩa trang web đó, mBt ?ng d/ng có thE chW giao ti*p l;i cho triEn khai máy ch4, đó, m;ng lư+i ?ng d/ng đư8c phép đE k*t nCi đ*n máy ch4 mà tU chúng đư8c t6i v: Silverlight bao hJ tr8 k*t nCi cross\domain cho phép mBt ?ng d/ng đE truy cAp vào tài nguyên tU đ.a điEm khác(sub domaint, –) v+i trang web gCc Đây mBt tính quan trOng đE t;o đi:u kiPn cho ?ng d/ng Silverlight sc d/ng d.ch v/ hiPn có web Các sách an ninh hP thCng Silverlight runtime bây gi7, đòi h˜i mBt tAp tin cross\domain policy đư8c t6i v: trư+c sd k*t nCi đư8c phép truy cAp vào tài nguyên Đi:u 6nh hư>ng đ*n sách b6o mAt c4a hP thCng domain qua m;ng truy cAp cho WebClient HTTP l+p namespace System.Net ĐCi v+i sockets, sách an ninh hP thCng Silverlight 6nh hư>ng đ*n quy:n truy cAp c4a c6 trang web gCc cross\domain Chính sách b6o mAt bnt buBc cho bLt kỳ k*t nCi kiEu socket, thAm chí c6 k*t nCi l;i t+i trang web Đi:u Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT khác tU hành vi ?ng xc Silverlight Beta 1, nơi socket đư8c cho phép k*t nCi đư8c cho phép tU site gCc Các nBi dung phXn cung cLp thông tin chi ti*t v: viPc làm th* đE sc d/ng hP thCng sách b6o mAt Silverlight mơ t6 sách tAp tin đ.nh d;ng đư8c hJ tr8 2.1 Khái niPm b6n v: sách b6o mAt hP thCng Silverlight hJ tr8 hai lo;i tAp tin quy đ.nh cách ?ng sc b6o mAt: TAp tin sách c4a Adobe Flash \ crossdomain.xml TAp tin sách chW có thE đư8c sc d/ng b>i WebClient l+p HTTP namespace System.Net Qua tAp tin sách Flash, cho phép truy cAp vào tLt c6 tên mi:n sg đư8c sc d/ng b>i Silverlight TAp tin sách c4a Silverlight – clientaccesspolicy.xml TAp tin có thE đư8c sc d/ng b>i l+p WebClient l+p HTTP namespace System.Net có thE cho l+p sockets namespace System.Net.Sockets TAp tin sách đ.nh d;ng khác v+i tAp tin sách c4a Flash Trư+c cho phép k*t nCi v+i tài nguyên m;ng, Silverlight sg cC gnng t6i v: tAp tin sách b6o mAt tU tài nguyên m;ng Có hai phương pháp khác đư8c sc d/ng đE t6i v: sách b6o mAt mà ph/ thuBc vào viPc k*t nCi đư8c request tU mBt WebClient hoIc HTTP hoIc l+p đư8c request k*t nCi tU sockets N*u đư8c yêu cXu k*t nCi tU WebClient hoIc l+p HTTP t+i cross\domain site, Silverlight cC gnng t6i v: tAp tin sách b6o mAt bong cách sc d/ng giao th?c HTTP Silverlight đXu tiên cC gnng t6i v: tAp tin sách Silverlight v+i tên "clientaccesspolicy.xml" > gCc c4a site m/c tiêu bong cách sc d/ng giao th?c HTTP N*u tAp tin sách c4a Silverlight tr6 l;i (thAm chí n*u có lJi phân tích cú pháp tAp tin), đư8c sc d/ng sách cho tAp tin mà request cross\domain tLt c6 request t+i máy ch4 cho nh1ng phiên làm viPc c4a ?ng d/ng Silverlight N*u tAp tin sách Silverlight khơng đư8c tìm thLy, Silverlight sau sg cC gnng t6i v: mBt tAp tin sách Flash có tên "crossdomain.xml" > gCc c4a site m/c tiêu đư8c yêu cXu bong cách sc d/ng giao th?c HTTP Các sách tAp tin Flash ph6i cho phép k*t nCi đ*n tLt c6 tên mi:n cho sg đư8c sc d/ng b>i Silverlight WebClient l+p HTTP Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT N*u đư8c yêu cXu k*t nCi tU sockets cho trang web (cross\domain site hoIc site gCc), Silverlight cC gnng đE m> mBt k*t nCi TCP vào crng 943 trang web m/c tiêu N*u k*t nCi TCP có thE đư8c thi*t lAp, Silverlight gci chuJi đIc biPt đ*n server đE yêu cXu tAp tin sách Silverlight Silverlight đ8i đE sau nhAn đư8c tr6 l7i tU web m/c tiêu có ch?a tAp tin sách Silverlight N*u tAp tin sách Silverlight đư8c tr6 l;i (thAm chí n*u có mBt lJi phân tích cú pháp tAp tin), đư8c sc d/ng tAp tin sách cho request socket tLt c6 request cho trang web m/c tiêu tLt c6 session c4a ?ng d/ng Silverlight N*u tAp tin sách t6i v: thành cơng phân tích cú pháp cho phép, cuCi m> mBt k*t nCi đ*n host m/c tiêu N*u tAp tin sách t6i v: khơng h8p lP khơng thE phân tích cú pháp mBt cách xác, sau k*t nCi t+i tài nguyên m;ng c4a Silverlight sg b tU chCi yêu cXu k*t nCi sg khơng thành cơng N*u khơng có sách tAp tin đư8c tìm thLy, sau k*t nCi vào m;ng nguyên b tU chCi c4a Silverlight yêu cXu k*t nCi sg không thành công Br sung mBt nh1ng h;n ch* bong cách sc d/ng l+p sockets ?ng d/ng m;ng cho phép k*t nCi chW v+i nh1ng crng ph;m vi 4502\4534 šng d/ng Silverlight chW đư8c phép k*t nCi t+i nh1ng crng vAy sc d/ng socket N*u crng mà b;n truy cAp không ph6i ph;m vi crng này, cC gnng k*t nCi sg thLt b;i ĐE triEn khai tAp tin sách b6o mAt sc d/ng k*t nCi tU WebClient l+p HTTP, qu6n tr viên hP thCng cXn ph6i cLu hình Web service cho mJi đ.a chW IP mà cung cLp cho tAp tin đ.nh nghĩa sách t;o nh1ng tAp tin sách b6o mAt c4a Flash Silverlight đE có thE tìm thLy qua giao th?c HTTP ĐE triEn khai tAp tin sách b6o mAt máy cho socket, qu6n tr viên hP thCng cXn ph6i cLu hình mBt d.ch v/ xác thdc riêng biPt crng 943 cho mJi đ.a chW IP cung cLp đ.nh nghĩa tAp tin sách Truy c p web service silverlight šng d/ng máy khách Silverlight ch;y trình duyPt thư7ng cXn ph6i k*t nCi t+i nhi:u nguVn s> d1 liPu khác MBt ví d/ điEn hình viPc truy cAp d1 liPu vào s> d1 liPu tU mBt máy ch4 hiEn th lên giao diPn ngư7i dùng Silverlight K.ch b6n phr bi*n khác cAp nhAt d1 liPu service thông qua ?ng d/ng Silverlight đE truyEn t6i thơng tin t+i service Nh1ng nguVn d1 liPu ngồi thư7ng đư8c lLy v: tU Web service Nh1ng service có thE SOAP service đư8c t;o sc d/ng Windows Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT Communication Foundation(WCF) hoIc mBt vài n:n t6ng SOAP khác hoIc chW đơn gi6n HTTP hoIc Service tĩnh šng d/ng Silverlight máy khách có thE truy cAp nh1ng Web service trdc ti*p hoIc sc d/ng proxy đư8c sinh tU metadata đư8c published b>i service.Silverlight cung cLp tính cXn thi*t đE làm viPc v+i mBt lo;t đ.nh d;ng d1 liPu đư8c sc d/ng b>i Service Bao gVm đ.nh d;ng XML, JSON, RSS, Atom Nh1ng đ.nh d;ng d1 liPu đư8c truy cAp sc d/ng Serialization components, Linq to XML, Linq to JSON, Syndication components 3.1 B6o mAt cho truy cAp Service B6o vP ?ng d/ng máy khách Silverlight d1 liPu ngư7i dùng ĐE b6o vP ?ng d/ng silverlight kh˜i nh1ng service đBc h;i, b;n ph6i bi*t v: mBt sC vLn đ: b6o mAt dư+i đây: + Service có thE gci v: nh1ng thông tin mà làm cho ?ng d/ng máy khách Silverlight có thE trình duyPt c4a ngư7i d/ng b treo hoIc lJi Đi:u có thE v+i bLt kỳ d1 liPu có đ.nh d;ng XML, JSON, RSS, Atom SOAP ĐE tránh viPc cXn thdc hiPn sau: + Tránh kh>i t;o giao ti*p t+i service không tin tư>ng mà b lJi hoIc treo sg gây mLt d1 liPu c4a ?ng d/ng c4a ngư7i dùng Ví d/, lưu l;i cơng viPc c4a ngư7i dùng xuCng máy trư+c kh>i t;o giao ti*p + Tránh td đBng kh>i t;o t+i service không tin tư>ng, mà không cho phép ngư7i dùng lda chOn Đi:u có thE d}n t+i ?ng d/ng c4a b;n khơng thE dùng đư8c Hãy ghi nh+ rong mBt d.ch v/ đBc h;i có thE khơng ln tr6 v: d1 liPu đBc h;i B6o vP Service Hãy ghi nh+ rong service mà b;n publish cho ?ng d/ng máy khách Silverlight có thE đư8c truy cAp c4a bLt kỳ ngư7i đư8c sc d/ng v+i nh1ng cách mà b;n có thE khơng mong đ8i Xem xét viPc phịng ngUa sau đây: + Không nên đưa d1 liPu thUa v+i m/c đích sc d/ng + Chnc chnn sc d/ng xác thdc ngư7i dùng thích h8p v: mIt cơng nghP 3.2 T;o mBt Service vư8t qua ph;m vi domain ĐE cho phép Silverlight qu6n lý quy:n truy cAp vào service c4a domain khác, service ph6i tuỳ chWnh chW rõ ràng cross\domain đư8c phép truy cAp Bong viPc tuỳ chWnh, Silverlight control có thE truy cAp t+i service mBt cách thAt an tồn, mà khơng gây 6nh hư>ng xLu đ*n d1 liPu mà lưu tr1 b>i service Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT Silverlight hJ tr8 hai ch* khác cho service đE tuỳ chWnh quy:n truy cAp cross\ domain: - ĐIt tAp tin clientaccesspolicy.xml > gCc c4a domain nơi mà service đư8c lưu tr1 đE thi*t lAp quy:n truy cAp c4a cross\domain t+i service - ĐIt tAp tin crossdomain.xml h8p lP > gCc c4a domain nơi service đư8c lưu tr1 TAp tin ph6i đư8c đánh dLu public cho toàn domain Sc d/ng tAp tin clientaccesspolicy.xml đE cho phép truy cAp cross\domain T;o service cho phép máy khách Silverlight truy cAp T;o tAp tin clientaccesspolicy.xml, cho phép truy cAp vào service Thi*t lAp dư+i cho phép truy cAp tU bLt kỳ domain t+i nguVn tài nguyên c4a domain Lưu tAp tin clientaccesspolicy.xml t+i gCc c4a domain nơi service đư8c lưu tr1 Cho ví d/ này, n*u service đư8c lưu tr1 t;i http://fabrikam.com tAp tin ph6i đIt t;i http://fabrikam.com/clientaccesspolicy.xml Sc d/ng tAp tin crossdomain.xml đE cho phép truy cAp cross\domain T;o service cho phép Silverlight client truy cAp T;o tAp tin crossdomain.xml có nh1ng thi*t lAp dư+i TAp tin ph6i đư8c cLu hình đE cho phép truy cAp vào service tU bLt kỳ tên mi:n khác, hoIc khơng đư8c nhAn b>i Silverlight Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT Lưu tAp tin crossdomain.xml vào gCc c4a domain nơi mà service đư8c lưu tr1 máy ch4 Ví d/, n*u service đư8c lưu tr1 máy ch4 http://fabrikam.com tAp tin ph6i đư8c đIt t;i http://fabrikam.com/crossdomain.xml Làm vi Silverlight đE làm viPc v+i System.Net.Sockets Nh1ng l+p m+i bao gVm sau đây: + EndPoint \ xác đ.nh mBt đ.a chW m;ng Đây mBt l+p trUu tư8ng + DnsEndPoint \ đ;i diPn cho mBt m;ng lư+i endpoint mBt tên máy ch4 hoIc mBt chuJi ký td đ;i diPn c4a mBt đ.a chW IP mBt sC crng + Ipaddress \ Cung cLp đ.a chW giao th?c m;ng (IP) + IPEndPoint \ đ;i diPn cho mBt m;ng lư+i endpoint mBt đ.a chW IP mBt sC crng + SocketAddress – Lưu tr1 thông tin đư8c snp x*p k* thUa tU l+p EndPoint L+p Socket cung cLp mBt tAp h8p phương th?c cho giao ti*p m;ng L+p Socket cho phép b;n thdc thi bLt đVng bB viPc truy:n t6i d1 liPu sc d/ng bLt c? giao th?c giao Infoway Solutions CHƯƠNG VIII: GIAO TI P M NG TRONG SILVERLIGHT ti*p đư8c liPt kê > kiEu ProtocolType HiPn t;i, Silverlight chW hJ tr8 lo;i giao th?c TCP MBt nh1ng h;n ch* v: viPc sc d/ng sockets Silverlight crng ph6i ph;m vi 4502\4534 ChW nh1ng crng cho phép k*t nCi bong cách sc d/ng sockets ?ng d/ng Silverlight N*u mBt k*t nCi đ*n mBt crng không ph6i ph;m vi crng này, viPc k*t nCi sg khơng thành cơng 4.2 LAp trình m;ng b6n v+i Socket L+p Socket cho phép b;n thdc thi bLt đVng bB truy:n t6i d1 liPu sc d/ng nh1ng phương th?c sau đây: + ConnectAsync \ Bnt đXu Asynchronous request t+i máy ch4 + SendAsync \ Ghi d1 liPu tU mBt hay nhi:u buffers t+i Socket k*t nCi + ReceiveAsync \ ĐOc d1 liPu vào mBt hoIc nhi:u buffers tU Socket k*t nCi + Shutdown \ K*t thúc mOi thao tác gci ch7, tín hiPu > endpoint rong k*t nCi có thE b đóng l;i N*u viPc gci đư8c xác đ.nh, d1 liPu có thE v}n nhAn đư8c cho đ*n máy ch4 k*t thúc k*t nCi c4a (chW nhAn đư8c byte) + Close \ Là đóng k*t nCi máy ch4 lưu tr1 tLt c6 tài ngun qu6n lý khơng qu6n lý có liên quan t+i Socket Trong l+p Socket, ho;t đBng asynchronous c4a Socket đư8c mô t6 b>i kh6 dùng l;i System.Net.Sockets.SocketAsyncEventArgs phân br trì đCi tư8ng c4a ?ng d/ng Các ?ng d/ng có thE t;o SocketAsyncEventArgs c4a đCi tư8ng mà cXn Ví d/, n*u mBt ?ng d/ng Silverlight cXn ph6i có 10 Socket cho thao tác mBt lúc, có thE phân br 10 SocketAsyncEventArgs cho đCi tư8ng trư7ng h8p Vòng đ7i c4a SocketAsyncEventArgs đư8c sc d/ng asynchronous Socket đBng đư8c xác đ.nh b>i sd tham chi*u t+i mã c4a ?ng d/ng tham chi*u t+i asynchronous I / O Nó khơng cXn thi*t cho ?ng d/ng đE trì mBt tham chi*u cho đCi tư8ng SocketAsyncEventArgs sau đư8c gci mBt tham sC vào mBt nh1ng phương pháp asynchronous Socket Nó sg v}n đư8c tham chi*u cho đ*n đư8c tr6 v: hồn tLt Tuy nhiên, l8i th* cho ?ng d/ng đE gi1 l;i tham chi*u đ*n đCi tư8ng SocketAsyncEventArgs đE có thE đư8c tái sc d/ng cho asynchronous socket ti*p theo ho;t đBng Mã hóa dB li