AJAX ความปลอดภัย

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

  • พื้นผิวการโจมตีมีมากขึ้นเนื่องจากมีปัจจัยการผลิตที่ต้องรักษาความปลอดภัยมากขึ้น

  • นอกจากนี้ยังแสดงฟังก์ชันภายในของแอปพลิเคชัน

  • ความล้มเหลวในการปกป้องข้อมูลการตรวจสอบและเซสชัน

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

ตัวอย่าง

นี่คือตัวอย่างสำหรับ AJAX Security -

ในปี 2549 บริการอีเมล yahoo ที่ติดไวรัสโดยใช้ XSS และ AJAX ซึ่งใช้ประโยชน์จากช่องโหว่ในการจัดการเหตุการณ์ onload ของ Yahoo Mail เมื่อเปิดอีเมลที่ติดไวรัสเวิร์มจะเรียกใช้ JavaScript ส่งสำเนาไปยังผู้ติดต่อ Yahoo ทั้งหมดของผู้ใช้ที่ติดไวรัส

Hands ON

Step 1- เราจำเป็นต้องพยายามเพิ่มรางวัลให้กับชุดรางวัลที่คุณอนุญาตโดยใช้การฉีด XML ด้านล่างนี้คือภาพรวมของสถานการณ์

Step 2- ตรวจสอบให้แน่ใจว่าเราสกัดกั้นทั้งคำขอและการตอบกลับโดยใช้ Burp Suite การตั้งค่าเหมือนกับที่แสดงด้านล่าง

Step 3- ป้อนหมายเลขบัญชีตามที่ระบุในสถานการณ์ เราจะได้รับรายชื่อรางวัลทั้งหมดที่เรามีสิทธิ์ได้รับ เรามีสิทธิ์ได้รับ 3 รางวัลจาก 5 รางวัล

Step 4- ตอนนี้ให้เราคลิก 'ส่ง' และดูสิ่งที่เราได้รับใน XML การตอบกลับ ดังที่แสดงไว้ด้านล่างรางวัลสามรายการที่เรามีสิทธิ์จะถูกส่งให้เราเป็น XML

Step 5 - ตอนนี้ให้เราแก้ไข XML เหล่านั้นและเพิ่มรางวัลอีกสองรางวัลด้วย

Step 6- ตอนนี้รางวัลทั้งหมดจะแสดงให้ผู้ใช้เลือก เลือกรายการที่เราเพิ่มแล้วคลิก "ส่ง"

Step 7 - ข้อความต่อไปนี้ปรากฏขึ้นว่า "* ยินดีด้วยคุณเรียนจบบทเรียนนี้สำเร็จแล้ว"

กลไกการป้องกัน

ฝั่งไคลเอ็นต์ -

  • ใช้ .innerText แทน .innerHtml
  • อย่าใช้ eval
  • อย่าพึ่งพาตรรกะของไคลเอ็นต์เพื่อความปลอดภัย
  • หลีกเลี่ยงการเขียนรหัสซีเรียลไลเซชั่น
  • หลีกเลี่ยงการสร้าง XML แบบไดนามิก
  • อย่าส่งความลับไปยังลูกค้า
  • อย่าทำการเข้ารหัสในรหัสฝั่งไคลเอ็นต์
  • อย่าดำเนินการด้านความปลอดภัยที่ส่งผลกระทบต่อตรรกะในฝั่งไคลเอ็นต์

ฝั่งเซิร์ฟเวอร์ -

  • ใช้การป้องกัน CSRF
  • หลีกเลี่ยงการเขียนรหัสซีเรียลไลเซชั่น
  • บริการสามารถเรียกโดยผู้ใช้โดยตรง
  • หลีกเลี่ยงการสร้าง XML ด้วยมือใช้กรอบ
  • หลีกเลี่ยงการสร้าง JSON ด้วยมือใช้กรอบงานที่มีอยู่