JavaScript สามารถใช้เป็นเครื่องมือสำหรับแฮกเกอร์ในการโจมตีเว็บไซต์ การฉีดสคริปต์ที่เป็นอันตรายโดย JS (JavaScript) เป็นหนึ่งในวิธีการหนึ่ง ดังนั้นมาเรียนรู้วิธีป้องกันการโจมตีของ JS? ต่อไปนี้เป็นคำสั่งที่ดีแบ่งปันกับคุณ:
การโจมตีแบบฉีดจาวาสคริปต์คืออะไร?
เมื่อใดก็ตามที่คุณยอมรับการป้อนข้อมูลเนื้อหาจากผู้ใช้และแสดงซ้ำเว็บไซต์จะเสี่ยงต่อการโจมตีฉีดจาวาสคริปต์ ลองดูแอปพลิเคชันเฉพาะที่มีความเสี่ยงต่อการโจมตีฉีดจาวาสคริปต์ สมมติว่ามีการสร้างเว็บไซต์ความคิดเห็นของลูกค้าแล้ว ลูกค้าสามารถเยี่ยมชมเว็บไซต์และป้อนข้อมูลข้อเสนอแนะเกี่ยวกับผลิตภัณฑ์ เมื่อลูกค้าส่งข้อเสนอแนะข้อมูลข้อเสนอแนะจะถูกซ้ำในหน้าข้อเสนอแนะ
เว็บไซต์ความคิดเห็นของลูกค้าเป็นเว็บไซต์ที่เรียบง่าย น่าเสียดายที่เว็บไซต์นี้มีความเสี่ยงต่อการโจมตีฉีดจาวาสคริปต์
สมมติว่าข้อความต่อไปนี้กำลังถูกป้อนลงในแบบฟอร์มความคิดเห็นของลูกค้า:
<script> Alert ("Boo!") </script>
ข้อความนี้แสดงถึงสคริปต์ JavaScript ที่แสดงกล่องข้อความเตือน หลังจากมีคนส่งสคริปต์นี้ไปยังแบบฟอร์มความคิดเห็นของลูกค้าข้อความ Boo! จะแสดงการโจมตีเมื่อทุกคนเข้าชมเว็บไซต์ความคิดเห็นของลูกค้าในอนาคต คุณอาจคิดว่าคนอื่นจะไม่สามารถทำลายมันผ่านการโจมตีฉีดจาวาสคริปต์
ตอนนี้ปฏิกิริยาแรกของคุณต่อการโจมตีฉีดจาวาสคริปต์อาจจะไม่สนใจพวกเขา คุณอาจคิดว่าการโจมตีฉีดจาวาสคริปต์นั้นไม่มีอะไรมากไปกว่าอันตรายและน่าเสียดายที่แฮ็กเกอร์ทำการก่อวินาศกรรมโดยการฉีดจาวาสคริปต์ลงในเว็บไซต์ของพวกเขา การโจมตีการฉีดจาวาสคริปต์สามารถใช้ในการโจมตีข้ามไซต์ (XSS) การโจมตี ในการโจมตีสคริปต์ข้ามไซต์ข้อมูลผู้ใช้ที่เป็นความลับสามารถถูกขโมยและส่งไปยังเว็บไซต์อื่น
ตัวอย่างเช่นแฮกเกอร์สามารถใช้การโจมตีฉีดจาวาสคริปต์เพื่อขโมยค่าคุกกี้จากเบราว์เซอร์ของผู้ใช้รายอื่น หากข้อมูลที่ละเอียดอ่อน (เช่นรหัสผ่านบัญชีบัตรเครดิตหรือหมายเลขประกันสังคม) จะถูกบันทึกไว้ในคุกกี้เบราว์เซอร์แฮกเกอร์สามารถขโมยได้โดยใช้การโจมตีฉีดจาวาสคริปต์ อีกทางเลือกหนึ่งหากผู้ใช้ป้อนข้อมูลที่ละเอียดอ่อนลงในฟิลด์ฟอร์มของหน้าและหน้าจะถูกโจมตีด้วยการโจมตี JavaScript แฮ็กเกอร์สามารถใช้ JavaScript ที่ฉีดเพื่อรับข้อมูลฟอร์มและส่งไปยังเว็บไซต์อื่น
โปรดให้ความสนใจเป็นอย่างยิ่ง ทำการโจมตีการฉีดจาวาสคริปต์อย่างจริงจังและปกป้องข้อมูลที่เป็นความลับของผู้ใช้ ในสองส่วนถัดไปเราจะหารือสองเทคนิคเพื่อป้องกันแอปพลิเคชัน ASP.NET MVC จากการถูกโจมตีด้วยการฉีดจาวาสคริปต์
วิธีที่ 1: การเข้ารหัส HTML ในมุมมอง
วิธีที่ง่ายในการป้องกันการโจมตีแบบฉีดจาวาสคริปต์คือการเข้ารหัสข้อมูลที่ผู้ใช้เว็บไซต์ใด ๆ ใน HTML ใน HTML เมื่อมีการแสดงข้อมูลซ้ำในมุมมอง
ตัวอย่างเช่น: <%= html.encode (feedback.message)%>
ความหมายของการใช้ HTML ในการเข้ารหัสสตริงคืออะไร? เมื่อใช้ HTML เพื่อเข้ารหัสสตริงอักขระอันตรายเช่น <และ> จะถูกแทนที่ด้วยเอนทิตี HTML เช่น <และ> ดังนั้นเมื่อสตริง <script> Alert ("boo!") </script> ถูกเข้ารหัสโดยใช้ HTML มันจะถูกแปลงเป็น <script> Alert ("Boo!") </script> เบราว์เซอร์จะไม่เรียกใช้สคริปต์ JavaScript อีกต่อไปเมื่อแยกวิเคราะห์สตริงที่เข้ารหัส มันแสดงหน้าไม่เป็นอันตรายแทน
วิธีที่ 2: การเข้ารหัส HTML ก่อนที่จะเขียนลงในฐานข้อมูล
นอกเหนือจากการใช้ HTML เพื่อเข้ารหัสข้อมูลเมื่อแสดงข้อมูลในมุมมองคุณยังสามารถใช้ HTML เพื่อเข้ารหัสข้อมูลก่อนที่จะส่งไปยังฐานข้อมูล วิธีที่สองคือกรณีที่มีคอนโทรลเลอร์ในรายการ 4 ของโปรแกรม
ชอบ:
Public ActionResult Create (String Message) {// เพิ่ม FettimedVar newFeedBack = ข้อเสนอแนะใหม่ (); newFeedBack.message = Server.htmLencode (ข้อความ); newFeedback.entrydate = datetime.now; db.feedbacks.insertonsubmit // redirectreturn redirecttoaction ("index");}โปรดทราบว่าค่าของข้อความคือการเข้ารหัส HTML ในการดำเนินการ CREATE () ก่อนส่งไปยังฐานข้อมูล เมื่อข้อความถูกซ้ำในมุมมองข้อความจะถูกเข้ารหัส HTML ดังนั้นจึงไม่มีการฉีดจาวาสคริปต์ลงในข้อความ
สรุป
บ่อยครั้งที่ผู้คนชอบใช้วิธีแรกที่กล่าวถึงในบทช่วยสอนนี้ไม่ใช่วิธีที่สอง ปัญหาเกี่ยวกับวิธีการที่สองคือข้อมูลที่เข้ารหัส HTML จะถูกเก็บไว้ในฐานข้อมูลในที่สุด กล่าวอีกนัยหนึ่งข้อมูลในฐานข้อมูลจะมีอักขระแปลก ๆ ข้อเสียของสิ่งนี้คืออะไร? หากคุณต้องการแสดงข้อมูลฐานข้อมูลในรูปแบบอื่นนอกเหนือจากหน้าเว็บคุณจะพบปัญหา ตัวอย่างเช่นข้อมูลไม่สามารถแสดงได้อย่างง่ายดายในแอพพลิเคชั่น Windows Forms
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น