portaldacalheta.pt
  • หลัก
  • การเพิ่มขึ้นของระยะไกล
  • ผู้คนและทีมงาน
  • การวางแผนและการพยากรณ์
  • การออกแบบ Ux
ส่วนหลัง

10 ช่องโหว่ความปลอดภัยของเว็บที่พบบ่อยที่สุด



สำหรับ บริษัท ที่มีจำนวนมากเกินไปก็ยังไม่ถึง หลังจาก เกิดการละเมิดความปลอดภัย แนวทางปฏิบัติที่ดีที่สุดในการรักษาความปลอดภัยบนเว็บกลายเป็นสิ่งสำคัญ ในช่วงหลายปีที่ทำงานในฐานะผู้เชี่ยวชาญด้านความปลอดภัยด้านไอทีฉันได้เห็นครั้งแล้วครั้งเล่าว่าโลกของปัญหาด้านความปลอดภัยในการพัฒนาเว็บเป็นอย่างไร เพื่อนโปรแกรมเมอร์ .

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



โดยเฉพาะอย่างยิ่งคู่มือนี้มุ่งเน้นไปที่ 10 ข้อผิดพลาดด้านความปลอดภัยของเว็บที่พบบ่อยและมีนัยสำคัญที่ต้องระวังรวมถึงคำแนะนำเกี่ยวกับวิธีการบรรเทา โฟกัสอยู่ที่ ช่องโหว่ของเว็บ 10 อันดับแรก ระบุโดย เปิดโครงการความปลอดภัยของโปรแกรมประยุกต์บนเว็บ (OWASP) ซึ่งเป็นองค์กรระหว่างประเทศที่ไม่แสวงหาผลกำไรซึ่งมีเป้าหมายในการปรับปรุงความปลอดภัยของซอฟต์แวร์ทั่วโลก



ตัวอย่างช่องโหว่ทั่วไปของเว็บที่ไม่มีใครอยากเผชิญ



ไพรเมอร์ความปลอดภัยทางไซเบอร์เล็กน้อยก่อนที่เราจะเริ่ม - การรับรองความถูกต้องและการอนุญาต

เมื่อพูดคุยกับโปรแกรมเมอร์และผู้เชี่ยวชาญด้านไอทีคนอื่น ๆ ฉันมักพบความสับสนเกี่ยวกับความแตกต่างระหว่างการอนุญาตและการพิสูจน์ตัวตน และแน่นอนความจริงแล้วตัวย่อ รับรองความถูกต้อง มักใช้สำหรับทั้งสองอย่างช่วยซ้ำเติมความสับสนที่พบบ่อยนี้ ความสับสนนี้เกิดขึ้นบ่อยมากจนอาจรวมปัญหานี้ไว้ในโพสต์นี้ว่า“ Common Web Vulnerability Zero”



ดังนั้นก่อนที่เราจะดำเนินการต่อเรามาชี้แจงความแตกต่างระหว่างคำศัพท์ทั้งสองนี้:

  • การรับรองความถูกต้อง: การตรวจสอบว่าบุคคลนั้นเป็น (หรืออย่างน้อยก็ดูเหมือนจะเป็น) ผู้ใช้ที่ระบุเนื่องจากเขา / เธอได้ระบุข้อมูลรับรองความปลอดภัยอย่างถูกต้อง (รหัสผ่านคำตอบสำหรับคำถามเพื่อความปลอดภัยการสแกนลายนิ้วมือ ฯลฯ )
  • การอนุญาต: การยืนยันว่าผู้ใช้รายใดรายหนึ่งสามารถเข้าถึงทรัพยากรเฉพาะหรือได้รับอนุญาตให้ดำเนินการบางอย่าง

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



ข้อผิดพลาดในการรักษาความปลอดภัยเว็บทั่วไป # 1: ข้อบกพร่องในการฉีด

ข้อบกพร่องในการฉีดเป็นผลมาจากความล้มเหลวแบบคลาสสิกในการกรองอินพุตที่ไม่น่าเชื่อถือ อาจเกิดขึ้นได้เมื่อคุณส่งข้อมูลที่ไม่มีการกรองไปยังเซิร์ฟเวอร์ SQL (การแทรก SQL) ไปยังเบราว์เซอร์ (XSS - เราจะพูดถึงเรื่องนี้ ในภายหลัง ) ไปยังเซิร์ฟเวอร์ LDAP (การฉีด LDAP) หรือที่อื่น ๆ ปัญหาคือผู้โจมตีสามารถแทรกคำสั่งไปยังเอนทิตีเหล่านี้ส่งผลให้ข้อมูลสูญหายและขโมยเบราว์เซอร์ของลูกค้า



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

การป้องกัน: ข่าวดีก็คือการป้องกันการฉีดเป็น 'เพียง' เรื่องของการกรองข้อมูลที่คุณป้อนให้เหมาะสมและคิดว่าข้อมูลนั้นเชื่อถือได้หรือไม่ แต่ข่าวร้ายก็คือ ทั้งหมด ข้อมูลที่ป้อนจะต้องได้รับการกรองอย่างเหมาะสมเว้นแต่จะสามารถเชื่อถือได้อย่างไม่มีข้อสงสัย (แต่คำพูดที่ว่า 'ไม่เคยพูดว่าไม่เคย' จะอยู่ในใจที่นี่)



ตัวอย่างเช่นในระบบที่มีอินพุต 1,000 อินพุตการกรอง 999 รายการที่ประสบความสำเร็จนั้นไม่เพียงพอเนื่องจากยังคงเหลือหนึ่งฟิลด์ที่สามารถใช้เป็นฮีล Achilles เพื่อทำให้ระบบของคุณล้มลง และคุณอาจคิดว่าการใส่ผลลัพธ์การสืบค้น SQL ลงในแบบสอบถามอื่นเป็นความคิดที่ดีเนื่องจากฐานข้อมูลได้รับความเชื่อถือ แต่ถ้าขอบเขตไม่ใช่ข้อมูลนั้นจะมาจากคนที่มีเจตนาร้ายโดยทางอ้อม นี้เรียกว่า ลำดับที่สอง SQL Injection ในกรณีที่คุณสนใจ

เนื่องจากการกรองเป็นเรื่องยากที่จะทำอย่างถูกต้อง (เช่น crypto) สิ่งที่ฉันมักแนะนำคือให้พึ่งพาฟังก์ชันการกรองของเฟรมเวิร์กของคุณซึ่งได้รับการพิสูจน์แล้วว่าใช้งานได้และได้รับการกลั่นกรองอย่างละเอียด หากคุณไม่ใช้เฟรมเวิร์กคุณต้องคิดอย่างหนักว่า ไม่ การใช้สิ่งเหล่านี้เหมาะสมกับบริบทความปลอดภัยของเซิร์ฟเวอร์ของคุณ 99% ของเวลาที่ไม่ได้



ข้อผิดพลาดในการรักษาความปลอดภัยเว็บทั่วไป # 2: การตรวจสอบสิทธิ์เสีย

นี่คือชุดของปัญหาหลายประการที่อาจเกิดขึ้นระหว่างการตรวจสอบสิทธิ์เสีย แต่ปัญหาทั้งหมดไม่ได้เกิดจากสาเหตุเดียวกัน

สมมติว่าใคร ๆ ก็ยังต้องการที่จะม้วนรหัสรับรองความถูกต้องของตัวเองในปี 2014 (คุณคิดอะไรอยู่ ??) ฉันไม่แนะนำให้ทำเช่นนั้น เป็นเรื่องยากมากที่จะทำให้ถูกต้องและมีข้อผิดพลาดมากมายที่อาจเกิดขึ้นเพียงพูดถึง:

  1. URL อาจมีรหัสเซสชันและรั่วไหลในส่วนหัวของผู้อ้างอิงไปยังบุคคลอื่น
  2. รหัสผ่านอาจไม่ได้รับการเข้ารหัสทั้งในที่เก็บข้อมูลหรือการส่งผ่าน
  3. รหัสเซสชันอาจคาดเดาได้ดังนั้นการเข้าถึงจึงเป็นเรื่องเล็กน้อย
  4. การตรึงเซสชันอาจเป็นไปได้
  5. การไฮแจ็คเซสชันอาจเป็นไปได้การหมดเวลาไม่ได้ใช้งานอย่างถูกต้องหรือใช้ HTTP (ไม่มีการรักษาความปลอดภัย SSL) ฯลฯ ...

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

ข้อผิดพลาดทั่วไปเกี่ยวกับความปลอดภัยของเว็บ # 3: การเขียนสคริปต์ข้ามไซต์ (XSS)

นี่เป็นความล้มเหลวในการฆ่าเชื้ออินพุตที่ค่อนข้างแพร่หลาย (โดยพื้นฐานแล้วเป็นกรณีพิเศษของ ข้อผิดพลาดทั่วไป # 1 ). ผู้โจมตีให้แท็ก JavaScript ของเว็บแอปพลิเคชันของคุณในการป้อนข้อมูล เมื่ออินพุตนี้ถูกส่งกลับไปยังผู้ใช้ที่ไม่ได้รับการตรวจสอบเบราว์เซอร์ของผู้ใช้จะดำเนินการ อาจทำได้ง่ายเพียงแค่สร้างลิงก์และชักชวนให้ผู้ใช้คลิกหรืออาจเป็นเรื่องที่น่ากลัวกว่านั้นก็ได้ บนหน้าโหลดสคริปต์จะรันและตัวอย่างเช่นสามารถใช้เพื่อโพสต์คุกกี้ของคุณไปยังผู้โจมตี

การป้องกัน: มีวิธีแก้ปัญหาการรักษาความปลอดภัยบนเว็บอย่างง่าย: อย่าส่งคืนแท็ก HTML ให้กับไคลเอ็นต์ สิ่งนี้มีประโยชน์เพิ่มเติมในการป้องกันการฉีด HTML ซึ่งเป็นการโจมตีที่คล้ายกันโดยผู้โจมตีจะฉีดเนื้อหา HTML ธรรมดา (เช่นรูปภาพหรือโปรแกรมเล่นแฟลชที่มองไม่เห็นเสียงดัง) - ไม่ส่งผลกระทบสูง แต่น่ารำคาญอย่างแน่นอน (“ โปรดหยุด!”) โดยปกติวิธีแก้ปัญหาคือการแปลงทั้งหมด เอนทิตี HTML ดังนั้นจึงส่งคืนเป็น