0Pricing
Cyber Security Academy · บทเรียน

การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก

ตรวจสอบข้อมูลป้อนเข้าทั้งหมดที่ฝั่งเซิร์ฟเวอร์ เข้ารหัสข้อมูลส่งออกให้เหมาะกับบริบท และป้องกันการแทรกคำสั่ง

การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการตรวจสอบข้อมูลนำเข้าจึงสำคัญ

ช่องโหว่จากการแทรกคำสั่ง — SQL คำสั่ง LDAP XPath และอื่น ๆ — เกิดขึ้นเมื่อข้อมูลนำเข้าที่ไม่น่าเชื่อถือถูกตีความเป็นโค้ด การตรวจสอบข้อมูลนำเข้าช่วยให้ข้อมูลเป็นไปตามชนิด ความยาว และรูปแบบที่คาดไว้ก่อนนำไปประมวลผล จัดเก็บ หรือส่งกลับ

การตรวจสอบด้วยรายการอนุญาตเทียบกับรายการปฏิเสธ

การตรวจสอบด้วยรายการอนุญาต (ไวต์ลิสต์) กำหนดสิ่งที่ IS ยอมรับได้ เช่น อนุญาตเฉพาะอักขระตัวอักษรและตัวเลข เฉพาะจำนวนเต็มในช่วง 1-100 หรือเฉพาะรูปแบบอีเมลที่ถูกต้อง การตรวจสอบด้วยรายการปฏิเสธ (บัญชีดำ) พยายามบล็อกข้อมูลนำเข้าที่ทราบว่าไม่ดี แต่ไม่เคยครอบคลุมทั้งหมด ควรเลือกใช้รายการอนุญาต

การตรวจสอบฝั่งเซิร์ฟเวอร์

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

การตรวจสอบข้อมูลนำเข้าสำหรับชนิดข้อมูลต่าง ๆ

ตัวเลข: ตรวจสอบชนิดและช่วงค่า สตริง: ตรวจสอบความยาวและชุดอักขระ วันที่: แยกวิเคราะห์อย่างเคร่งครัดและตรวจสอบช่วงค่า ไฟล์: ตรวจสอบส่วนขยาย AND ไบต์ลายเซ็น/ชนิด MIME — อย่าเชื่อถือส่วนขยายเพียงอย่างเดียว URL: แยกวิเคราะห์และตรวจสอบรูปแบบ โฮสต์ และองค์ประกอบเส้นทาง

คิวรีแบบมีพารามิเตอร์ป้องกัน SQLi

ผลลัพธ์ที่สำคัญที่สุดของการตรวจสอบข้อมูลนำเข้าสำหรับฐานข้อมูลคือ ห้ามนำข้อมูลนำเข้าของผู้ใช้ไปต่อสตริงเข้ากับ SQL เด็ดขาด ให้ใช้ query แบบมีพารามิเตอร์ (คำสั่งที่เตรียมไว้) โดยส่งข้อมูลนำเข้าของผู้ใช้เป็นพารามิเตอร์ ไม่ใช่แทรกลงในสตริง query

// WRONG:
const q = "SELECT * FROM users WHERE name = '" + name + "'";
// RIGHT:
const q = "SELECT * FROM users WHERE name = $1";
await client.query(q, [name]);

บริบทของการเข้ารหัสผลลัพธ์

สตริงเดียวกันต้องใช้การเข้ารหัสต่างกันตามบริบท ส่วนเนื้อหา HTML: เข้ารหัส HTML (< > &) แอตทริบิวต์ HTML: การเข้ารหัสแอตทริบิวต์ HTML JavaScript: การหลีกอักขระใน JS พารามิเตอร์ URL: การเข้ารหัส URL (การเข้ารหัสแบบเปอร์เซ็นต์) การใช้การเข้ารหัสผิดประเภทเปิดช่องโหว่ที่ผู้โจมตีสามารถใช้ประโยชน์ได้

การเข้ารหัส HTML เพื่อป้องกัน XSS

อย่าแทรกข้อมูลผู้ใช้ลงใน HTML โดยตรง ให้ใช้เครื่องมือสร้างแม่แบบหรือไลบรารีที่หลีกอักขระ HTML โดยอัตโนมัติ ใน React, {value} ปลอดภัย ส่วน dangerouslySetInnerHTML จะข้ามการหลีกอักขระ ใน Django เทมเพลตจะหลีกอักขระโดยอัตโนมัติ เว้นแต่จะใช้ตัวกรอง safe อย่างชัดเจน

การเข้ารหัสบริบท JavaScript

เมื่อนำข้อมูลไปใส่ใน JavaScript (เช่น ตัวแปรที่เริ่มต้นด้วยข้อมูลผู้ใช้) การเข้ารหัส HTML ยังไม่เพียงพอ ให้ใช้การเข้ารหัส JSON: JSON.stringify(value) วิธีนี้ป้องกันไม่ให้ข้อมูลหลุดออกจากบริบทสตริงลิเทอรัลของ JS

การเข้ารหัส URL

ข้อมูลที่ผู้ใช้ส่งซึ่งนำไปใส่ใน URL ต้องเข้ารหัสแบบเปอร์เซ็นต์โดยใช้ encodeURIComponent() (JS) หรือ urllib.parse.quote() (Python) ข้อมูลที่ไม่ได้เข้ารหัสอาจเปลี่ยนแปลงโครงสร้าง URL จนนำไปสู่การเปลี่ยนเส้นทางแบบเปิดหรือการข้ามผ่านเส้นทาง

นโยบายความปลอดภัยเนื้อหาในฐานะการป้องกันหลายชั้น

CSP เพิ่มแนวป้องกันชั้นที่สองจาก XSS CSP ที่เข้มงวดซึ่งใช้ค่า nonce จะป้องกันการเรียกใช้สคริปต์แบบอินไลน์ แม้ว่าจะมีการแทรกส่วนข้อมูลโจมตี XSS เนื่องจากเบราว์เซอร์จะปฏิเสธการเรียกใช้สคริปต์ที่ไม่มีแอตทริบิวต์ nonce ที่ถูกต้อง

การป้องกัน XSS บน DOM

DOM XSS เกิดขึ้นเมื่อ JavaScript อ่านข้อมูลจากแหล่งที่ผู้โจมตีควบคุมได้ (location.hash, document.URL, cookie) แล้วเขียนข้อมูลลงในจุดรับข้อมูลที่เป็นอันตราย (innerHTML, document.write, eval) ควรตรวจสอบเส้นทางการไหลของข้อมูลทั้งหมดจาก API ของเบราว์เซอร์ไปยังจุดรับข้อมูลของ DOM โดยใช้เครื่องมือวิเคราะห์แบบคงที่

ตรวจสอบความรู้

เหตุใดการตรวจสอบข้อมูลนำเข้าฝั่งเซิร์ฟเวอร์จึงจำเป็น แม้จะมีการตรวจสอบฝั่งไคลเอนต์แล้ว

สรุป

การตรวจสอบข้อมูลนำเข้า (รายการอนุญาต การตรวจสอบชนิดข้อมูล การจำกัดความยาว) ร่วมกับการเข้ารหัสผลลัพธ์ตามบริบท (HTML, JS, URL และการใช้พารามิเตอร์ใน SQL) เป็นแนวป้องกันหลักจากการโจมตีแบบแทรกคำสั่งและ XSS ทั้งหมดนี้ต้องนำไปใช้ฝั่งเซิร์ฟเวอร์โดยไม่มีข้อยกเว้น

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก”

ตรวจสอบข้อมูลป้อนเข้าทั้งหมดที่ฝั่งเซิร์ฟเวอร์ เข้ารหัสข้อมูลส่งออกให้เหมาะกับบริบท และป้องกันการแทรกคำสั่ง คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจสอบข้อมูลป้อนเข้าและการเข้ารหัสข้อมูลส่งออก
  2. การจัดการส่วนพึ่งพาอย่างปลอดภัย
  3. OWASP ASVS: มาตรฐานตรวจสอบความปลอดภัยแอปพลิเคชัน
  4. เทคนิคการตรวจสอบโค้ดอย่างปลอดภัย
← กลับไปที่ Cyber Security Academy