Làm th? nào đ? ngăn ch?n v?n đ? an ninh cross-site scripting

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 252985 - Xem s?n ph?m mà bài này áp d?ng vào.
Chú ?
Bài vi?t này áp d?ng cho Windows 2000. H? tr? cho Windows 2000 k?t thúc vào ngày 13 tháng 7 năm 2010. Các Trung tâm gi?i pháp k?t thúc h? tr? Windows 2000 là m?t đi?m kh?i đ?u đ? l?p k? ho?ch chi?n lư?c c?a b?n di chuy?n t? Windows 2000. Đ? bi?t thêm thông tin xem các Chính sách v?ng đ?i h? tr? c?a Microsoft.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

T?o đ?ng các trang HTML có th? gi?i thi?u r?i ro b?o m?t N?u đ?u vào không xác nh?n ho?c là trên đư?ng vào ho?c trên đư?ng ra. K?ch b?n đ?c h?i có th? đư?c nhúng trong đ?u vào đó đư?c g?i đ?n các trang Web và xu?t hi?n đ? các tr?nh duy?t như có ngu?n g?c t? m?t ngu?n đáng tin c?y. V?n đ? này đư?c g?i là m?t cross-site scripting v?n đ? an ninh. Bài vi?t này th?o lu?n v? v?n đ? an ninh cross-site scripting, chi nhánh và công tác ph?ng ch?ng.

THÔNG TIN THÊM

V?n đ?

V?n đ? cơ b?n là r?t nhi?u các trang Web hi?n th? đ?u vào mà không xác nh?n. N?u đ?u vào không đư?c xác nh?n, k?ch b?n đ?c h?i có th? đư?c nhúng trong các đ?u vào. N?u m?t k?ch b?n phía máy ch? sau đó s? hi?n th? này không xác nh?n đ?u vào, đo?n m? ch?y trên các tr?nh duy?t như là m?c dù các trang web đáng tin c?y t?o ra nó.

Chi nhánh

N?u đ?u vào cho các trang Web năng đ?ng c?a b?n không đư?c xác nh?n, b?n có th? g?p ph?i nh?ng v?n đ? sau đây:
  • Toàn v?n d? li?u có th? đư?c th?a hi?p.
  • Cookie có th? đư?c thi?t l?p và đ?c.
  • Đ?u vào ngư?i s? d?ng có th? đư?c ch?n.
  • Script đ?c h?i có th? đư?c th?c hi?n b?i các khách hàng trong b?i c?nh c?a ngu?n đáng tin c?y.
Nh?ng trang Web có nguy cơ? V? b?n ch?t, v?n đ? ?nh hư?ng đ?n trang năng đ?ng t?o d?a trên đ?u vào không đư?c xác nh?n. Ví d? đi?n h?nh bao g?m các lo?i sau đây c?a các trang Web:
  • Công c? tr? l?i các trang k?t qu? d?a trên đ?u vào ngư?i s? d?ng t?m ki?m.
  • Các trang đăng nh?p mà lưu tr? tài kho?n ngư?i dùng trong cơ s? d? li?u, cookie, và vv và sau đó ghi tên ngư?i dùng cho khách hàng.
  • Web h?nh th?c x? l? thông tin th? tín d?ng.

Công tác ph?ng ch?ng

Ph?n này tr?nh bày m?t vài phương pháp ti?p c?n đ? ngăn ch?n các cu?c t?n công an ninh cross-site scripting. Đánh giá t?nh h?nh c? th? c?a b?n đ? xác đ?nh k? thu?t mà s? làm vi?c t?t nh?t cho b?n. Đi?u quan tr?ng là c?n lưu ? r?ng trong t?t c? các k? thu?t, b?n đang phê chu?n d? li?u mà b?n nh?n đư?c t? đ?u vào và không có script c?a b?n tin c?y. V? b?n ch?t, công tác ph?ng ch?ng có ngh?a r?ng b?n làm theo t?t th?c hành m? hóa b?ng cách ch?y ki?m tra sanity vào đ?u vào c?a b?n đ? thói quen c?a b?n.

Danh sách sau v?ch ra các phương pháp ti?p c?n chung đ? ngăn ch?n các cu?c t?n công cross-site scripting:
  • M? hóa đ?u ra d?a trên các thông s? đ?u vào.
  • L?c các thông s? đ?u vào cho k? t? đ?c bi?t.
  • B? l?c ra d?a trên các thông s? đ?u vào cho k? t? đ?c bi?t.
Khi b?n l?c ho?c m? hóa, b?n ph?i ch? đ?nh m?t k? t? đ?t cho các trang Web c?a b?n đ? đ?m b?o r?ng b? l?c c?a b?n đang ki?m tra các k? t? đ?c bi?t thích h?p. D? li?u đư?c chèn vào các trang Web c?a b?n nên l?c ra tr?nh t? byte đư?c coi là đ?c bi?t d?a trên t?p k? t? c? th?. M?t charset ph? bi?n là ISO 8859-1, đó là m?c đ?nh trong các phiên b?n đ?u c?a HTML và HTTP. B?n ph?i đưa vào tài kho?n các v?n đ? đ?a phương hoá khi b?n thay đ?i các tham s?.

M? hóa đ?u ra d?a trên các thông s? đ?u vào cho k? t? đ?c bi?t

M? hóa d? li?u đó nh?n đư?c như đ?u vào khi b?n vi?t nó ra dư?i d?ng HTML. Đi?u này k? thu?t có hi?u qu? vào d? li?u mà không đư?c xác nh?n cho m?t s? l? do trong th?i gian đ?u vào. B?ng cách s? d?ng k? thu?t ch?ng h?n như URLEncodeHTMLEncode, b?n có th? ngăn ng?a đ?c h?i k?ch b?n th?c hi?n.

Đo?n m? sau đây ch?ng minh làm th? nào đ? s? d?ng URLEncodeHTMLEncode t? Active Server Pages (ASP) trang:
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
N?u b?n m? hóa HTML và các URL, b?n có th? c?n ph?i ch? đ?nh trang m? như b?n s? n?u b?n đ? là l?c d? li?u.

Đi?u quan tr?ng c?n lưu ? r?ng kêu g?i là HTMLEncode trên chu?i đó là v? đ? đư?c hi?n th? s? ngăn ch?n b?t c? k?ch b?n trong nó t? đang đư?c th?c thi và do đó ngăn ng?a v?n đ?.

L?c các thông s? đ?u vào cho k? t? đ?c bi?t

L?c đ?u vào ho?t đ?ng b?ng cách lo?i b? m?t s? ho?c t?t c? các k? t? đ?c bi?t t? đ?u vào c?a b?n. K? t? đ?c bi?t là nhân v?t mà kích ho?t k?ch b?n đ? đư?c t?o ra trong m?t d?ng HTML. K? t? đ?c bi?t bao g?m:
< > " ' % ; ) ( & + -
				
Lưu ? r?ng t?nh h?nh cá nhân c?a b?n có th? đ?m b?o vi?c l?c k? t? b? sung ho?c dây vư?t ra ngoài các k? t? đ?c bi?t.

Trong khi l?c có th? là m?t k? thu?t có hi?u qu?, có m?t vài h?y c?n th?n:
  • L?c có th? không thích h?p cho m?t s? đ?u vào. Ví d?, trong các t?nh hu?ng nơi b?n đang nh?n đư?c <text> đ?u vào t? m?t h?nh th?c HTML, b?n có th? thay v? ch?n m?t phương pháp như m? hóa (xem bên dư?i).</text>
  • M?t s? nhân v?t l?c th?c t? có th? yêu c?u đ?u vào k?ch b?n phía máy ch?.
B? l?c m?u sau đây đư?c vi?t b?ng JavaScript, ch?ng t? làm th? nào đ? lo?i b? các k? t? đ?c bi?t:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
Đo?n m? sau quá tr?nh đ?u vào ngư?i s? d?ng trư?c khi lưu tr? nó đ? s? d?ng sau này.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

B? l?c ra d?a trên các thông s? đ?u vào cho k? t? đ?c bi?t

K? thu?t này là tương t? như l?c đ?u vào ngo?i tr? vi?c b?n l?c k? t? đư?c vi?t cho khách hàng. Trong khi đi?u này có th? là m?t k? thu?t có hi?u qu?, nó có th? tr?nh bày m?t v?n đ? cho các trang Web vi?t ra các ph?n t? HTML.

Ví d?, trên m?t trang mà vi?t ra<table>các y?u t?, m?t ch?c năng chung chung mà lo?i b? các k? t? đ?c bi?t s? d?i các < and=""> k? t?, mà tàn tích các<table>t? khóa. V? v?y, đ? các k? thu?t này là h?u ích, b?n s? ch? l?c d? li?u thông qua t?i ho?c d? li?u mà trư?c đây đư?c đưa vào b?i m?t ngư?i s? d?ng và lưu tr? trong cơ s? d? li?u.</table></table>

Có th? ngu?n d? li?u đ?c h?i

Trong khi v?n đ? áp d?ng cho b?t k? trang nào s? d?ng đ?u vào đ? t? đ?ng t?o ra HTML, sau đây là m?t s? ngu?n có th? đ?c h?i d? li?u đ? giúp b?n ki?m tra t?i ch? cho các r?i ro b?o m?t ti?m năng:
  • Chu?i truy v?n
  • Cookie
  • Đăng d? li?u
  • Các URL và mi?ng các URL, ch?ng h?n như PATH_INFO
  • D? li?u L?y t? ngư?i dùng rơi trong m?t s? th?i trang như trong cơ s? d? li?u

K?t lu?n

Tóm l?i, sau đây là đi?m quan tr?ng c?n nh? v? các cross-site scripting c?a v?n đ? an ninh:
  • V?n đ? ?nh hư?ng đ?n trang năng đ?ng t?o d?a trên đ?u vào không đư?c xác nh?n.
  • Thi?u sót c?a m?t ki?m tra sanity vào d? li?u đ?u vào có th? có nh?ng tác đ?ng an ninh b?t ng?. V?n đ? là ngăn ng?a đư?c thông qua các tiêu chu?n phát tri?n t?t như xác nh?n đ?u vào.
  • B?n c?n ph?i đánh giá các gi?i pháp trên m?t cho m?i trang web, trang, và th?m chí c? l?nh v?c cơ s? và s? d?ng m?t k? thu?t mà làm cho c?m giác.

THAM KH?O

Đ? bi?t thêm chi ti?t, xem sau Active t? máy tính Emergency Response Team (CERT) t?i Đ?i h?c Carnegie Mellon:
http://www.CERT.org/Advisories/ca-2000-02.html
Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
253117Preventing Internet Explorer và Outlook Express cross-site scripting v?n đ? b?o m?t
253119 Làm th? nào đ? xem xét ASP m? cho CSSI d? b? t?n thương
253120 Làm th? nào đ? xem xét tr?c quan InterDev t?o ra m? cho CSSI d? b? t?n thương
253121 Làm th? nào đ? xem xét MTS/ASP m? cho CSSI d? b? t?n thương

Thu?c tính

ID c?a bài: 252985 - L?n xem xét sau cùng: 01 Tháng Chín 2011 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft Windows 2000 Server
T? khóa: 
kbcodesnippet kbcssi kbhowto kbsecurity kbmt KB252985 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:252985

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com