วิธีการป้องกันปัญหาด้านความปลอดภัยสคริปต์ข้ามไซต์

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 252985 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
หมายเหตุ
บทความนี้สามารถใช้ได้กับ Windows 2000การสนับสนุนสำหรับสิ้นสุดของ Windows 2000 ในเดือน 13 กรกฎาคม 2010กระบวนการศูนย์โซลูชัน windows 2000 สิ้นสุดของบริการเป็นจุดเริ่มต้นสำหรับการวางแผนเชิงกลยุทธ์การย้ายข้อมูลระบบของคุณจาก Windows 2000 สำหรับข้อมูลเพิ่มเติมให้ดูนโยบาย Lifecycle ฝ่ายสนับสนุนของ Microsoft.
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

เพจ HTML แบบไดนามิกที่สร้างขึ้นสามารถแนะนำความเสี่ยงด้านความปลอดภัยถ้ามีการป้อนข้อมูลจะไม่ตรวจสอบอย่างใดอย่าง หนึ่ง ในวิธีการใน หรือวิธีที่ออก สคริปต์ที่เป็นอันตรายสามารถถูกฝังอยู่ภายในการป้อนข้อมูลที่ส่งไปยังเว็บเพจ และเบราว์เซอร์เป็นเกิดจากแหล่งที่เชื่อถือ ปัญหานี้ถูกเรียกว่าเป็นระหว่างไซต์สคริปต์ด้านความปลอดภัยปัญหา บทความนี้กล่าวถึงปัญหาด้านความปลอดภัยสคริปต์ข้ามไซต์ ramifications และป้องกัน

ข้อมูลเพิ่มเติม

ปัญหานี้

ปัญหาที่ขีดเส้นใต้มีหลายเว็บเพจที่แสดงการป้อนข้อมูลที่ไม่มีการตรวจสอบ ถ้ามีการป้อนข้อมูลไม่ถูกตรวจสอบ สคริปต์ที่เป็นอันตรายสามารถถูกฝังอยู่ภายในการป้อนข้อมูล หากสคริปต์ฝั่งเซิร์ฟเวอร์แล้วแสดงการป้อนข้อมูลนี้ไม่ได้ผ่านการตรวจสอบ สคริปต์รันในเบราว์เซอร์ที่เป็นว่าจะสร้างไซต์ที่เชื่อถือได้

ramifications

ถ้ามีการป้อนข้อมูลลงในเพจของคุณเว็บแบบไดนามิกไม่ถูกตรวจสอบ คุณอาจพบปัญหาต่อไปนี้:
  • ความสมบูรณ์ของข้อมูลสามารถมีความเสียหาย
  • คุกกี้สามารถตั้งค่า และอ่าน
  • ป้อนข้อมูลของผู้ใช้สามารถถูกดัก
  • สคริปต์ที่เป็นอันตรายสามารถดำเนินการ โดยไคลเอนต์ในบริบทของแหล่งที่เชื่อถือ
เว็บเพจที่ใดบ้างในภาวะเสี่ยง มีผล essentially ปัญหากับสร้างหน้าแบบไดนามิกที่ขึ้นอยู่กับการป้อนข้อมูลที่ไม่ถูกตรวจสอบ ตัวอย่างที่ทั่วไปได้แก่ชนิดต่อไปนี้ของเว็บเพจ:
  • เซิร์ชเอ็นจินที่ส่งคืนผลลัพธ์หน้าขึ้นอยู่กับผู้ใช้ในการป้อนข้อมูล
  • หน้าการเข้าสู่ระบบที่เก็บบัญชีผู้ใช้ในฐานข้อมูล คุกกี้ และอื่น ๆ forth และเขียนชื่อผู้ใช้ไปยังไคลเอนต์ออกในภายหลัง
  • ฟอร์มของเว็บที่ประมวลผลข้อมูลบัตรเครดิต

ป้องกัน

ส่วนนี้แสดง approaches บางอย่างเพื่อป้องกันการโจมตีด้านความปลอดภัยสคริปต์ข้ามไซต์ ประเมินสถานการณ์ของคุณระบุเพื่อกำหนดเทคนิคต่าง ๆ ที่จะได้ดีที่สุดสำหรับคุณ มีความสำคัญหมายเหตุตรวจว่า ในเทคนิคทั้งหมด คุณจะสอบข้อมูลที่คุณได้รับจากการป้อนข้อมูลและไม่สคริปต์ของคุณเชื่อถือได้ หมาย essentially ป้องกันถึง ให้ คุณทำตามวิธีปฏิบัติที่ดีที่เขียนโปรแกรม ด้วยการรันการตรวจสอบ sanity ในการป้อนข้อมูลของคุณตามปกติของคุณ

รายการต่อไปนี้สรุป approaches ทั่วไปเพื่อป้องกันการโจมตีการเขียนสคริปต์ข้ามไซต์:
  • การเข้ารหัสแสดงผลที่ตามพารามิเตอร์ที่ป้อนเข้า
  • ตัวกรองข้อมูลพารามิเตอร์สำหรับการป้อนค่าสำหรับอักขระพิเศษ
  • แสดงผลของตัวกรองข้อมูลตามค่าพารามิเตอร์สำหรับการป้อนค่าสำหรับอักขระพิเศษ
เมื่อคุณกรองข้อมูล หรือเข้ารหัส คุณต้องระบุอักขระที่กำหนดให้เว็บเพจของคุณเพื่อให้แน่ใจว่า ตัวกรองของคุณกำลังตรวจสอบอักขระพิเศษที่เหมาะสม ข้อมูลที่ถูกแทรกลงในเว็บเพจของคุณควรรองออกลำดับไบต์ที่จะมีพิจารณาพิเศษขึ้นอยู่กับชุดอักขระที่ระบุ charset ที่ได้รับความนิยมคือ ISO 8859-1 ซึ่งถูกเริ่มต้นใน HTML และ HTTP รุ่นก่อนหน้า คุณต้องนำเข้าบัญชีเติมปัญหาเมื่อคุณเปลี่ยนพารามิเตอร์เหล่านี้

การเข้ารหัสแสดงผลที่ตามค่าพารามิเตอร์สำหรับการป้อนค่าสำหรับอักขระพิเศษ

การเข้ารหัสข้อมูลที่ได้รับเป็นการป้อนข้อมูลเมื่อคุณเขียนนั้นออกเป็น HTML เทคนิคนี้จะมีประสิทธิภาพในข้อมูลที่ถูกไม่ตรวจสอบสาเหตุบางอย่างในระหว่างการป้อนข้อมูล โดยใช้เทคนิคต่าง ๆ เช่นURLEncodeและHTMLEncodeคุณสามารถป้องกันไม่ให้สคริปต์ที่เป็นอันตรายจากการดำเนินการได้

snippets รหัสต่อไปนี้แสดงให้เห็นถึงวิธีการใช้URLEncodeและHTMLEncodeเพจของ Active Server หน้า (ASP):
<%
      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>");
%>
				
ถ้าคุณเข้ารหัส HTML และ url คุณอาจต้องระบุหน้ารหัส ตามที่คุณต้องการหากคุณมีการกรองข้อมูล

เป็นสิ่งสำคัญโปรดสังเกตว่า โทรศัพท์HTMLEncodeในสายอักขระที่อยู่ที่จะแสดงขึ้นจะเป็นป้องกันใด ๆ สคริปต์ในออกจากการดำเนินการ และซึ่ง ช่วยป้องกันไม่ให้ปัญหานี้

การกรองข้อมูลพารามิเตอร์สำหรับการป้อนค่าสำหรับอักขระพิเศษ

ป้อนข้อมูลการกรองการทำงาน โดยการเอาอักขระพิเศษบางอย่าง หรือทั้งหมดจากการป้อนข้อมูลของคุณ อักขระพิเศษคือ อักขระที่เปิดใช้งานสคริปต์เพื่อที่ถูกสร้างภายในสตรีม HTML อักขระพิเศษรวมต่อไปนี้:
< > " ' % ; ) ( & + -
				
โปรดสังเกตว่า สถานการณ์ของคุณแต่ละอาจ warrant การกรองข้อมูลของอักขระที่เพิ่มเติมหรือสายอักขระเกินกว่าอักขระพิเศษ

ในขณะที่สามารถกรองข้อมูลเป็นเทคนิคหนึ่งที่มีประสิทธิภาพ มีเพียงไม่กี่ caveats:
  • กรองอาจไม่เหมาะสมสำหรับการป้อนข้อมูลบางอย่าง ในสถานการณ์ที่คุณได้รับตัวอย่างเช่น <text>ป้อนข้อมูลจากฟอร์ม HTML มี คุณอาจแทนเลือกวิธีการเช่นการเข้ารหัส (ดูด้านล่าง) ได้</text>
  • อักขระบางตัวกรองจริงอาจต้องการป้อนข้อมูลกับสคริปต์ฝั่งเซิร์ฟเวอร์
ตัวกรองต่อไปนี้ตัวอย่างข้อมูล ซึ่งถูกเขียนใน JavaScript อธิบายวิธีการเอาอักขระพิเศษ:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
รหัสต่อไปนี้กระบวนการป้อนข้อมูลผู้ใช้ก่อนที่จะจัดเก็บสำหรับใช้ในภายหลัง
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

ตัวกรองขาออกที่ขึ้นอยู่กับพารามิเตอร์สำหรับการป้อนค่าสำหรับอักขระพิเศษ

เทคนิคนี้จะเหมือนกับการกรองยกเว้นว่าคุณกรองอักขระที่เขียนไปยังไคลเอนต์ออกจากการป้อนข้อมูล ขณะนี้อาจเป็นเทคนิคหนึ่งที่มีประสิทธิภาพ มันอาจนำเสนอปัญหาสำหรับเว็บเพจที่เขียนหาองค์ประกอบ HTML

For example, on a page that writes out<table>elements, a generic function that removes the special characters would strip the < and=""> characters, which ruins the <table>tag.Therefore, in order for this technique to be useful, you would only filter data passed in or data that was previously entered by a user and stored in a database.</table></table>

Possible sources of malicious data

While the problem applies to any page that uses input to dynamically generate HTML, the following are some possible sources of malicious data to help you spot check for potential security risks:
  • Query String
  • คุกกี้
  • Posted data
  • URLs and pieces of URLs, such as PATH_INFO
  • Data retrieved from users that is persisted in some fashion such as in a database

Conclusion

In conclusion, the following are key points to remember regarding the cross-site scripting security problem:
  • The problem affects dynamic page creation based on input that was not validated.
  • Omission of a sanity check on input data can have unexpected security implications. The problem is preventable through good development standards such as input validation.
  • You need to evaluate solutions on a per site, page, and even field basis and use a technique that makes sense.

ข้อมูลอ้างอิง

For more information, see the following advisory from the Computer Emergency Response Team (CERT) at Carnegie Mellon University:
http://www.cert.org/advisories/CA-2000-02.html
หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
253117Preventing Internet Explorer and Outlook Express cross-site scripting security issues
253119How to review ASP code for CSSI vulnerability
253120How to review Visual InterDev generated code for CSSI vulnerability
253121How to review MTS/ASP code for CSSI vulnerability

คุณสมบัติ

หมายเลขบทความ (Article ID): 252985 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Windows 2000 Server
Keywords: 
kbcodesnippet kbcssi kbhowto kbsecurity kbmt KB252985 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:252985

ให้ข้อเสนอแนะ

 

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