SQL Injection: ยังคงเป็นภัยคุกคามอยู่หรือไม่? คุณจะหลีกเลี่ยงได้อย่างไร
เผยแพร่แล้ว: 2020-03-07การละเมิดข้อมูลเป็นเรื่องปกติจนไม่น่าแปลกใจอีกต่อไป ผู้ประสงค์ร้ายมีเป้าหมายที่จะรวบรวมข้อมูลให้ได้มากที่สุด ข้อมูลบัตรเครดิต หรือความลับทางการค้า เมื่อพวกเขาได้รับข้อมูลดังกล่าวแล้วพวกเขาก็ขายมันบนเว็บมืด
หากคุณไม่สามารถเข้าใจได้ว่าพวกเขาขโมยข้อมูลไปมากน้อยเพียงใด และพวกเขาทิ้งข้อมูลบนเว็บมืดไปมากน้อยเพียงใด นี่คือตัวเลขที่น่าเป็นห่วง ปีที่แล้ว อาชญากรขโมยและขายบัญชี 620 ล้านบัญชีจากเว็บไซต์ที่ถูกแฮ็ก 16 แห่งเพียงอย่างเดียว ใช่ การแฮ็กเว็บไซต์สิบหกแห่งอาจสร้างความเสียหายได้มากมาย แต่คุณรู้ไหมว่าอะไรที่แย่กว่านั้น? ไซต์ใหม่นับพันถูกแฮ็กทุกวัน!
อาชญากรไซเบอร์คิดค้นวิธีการแฮ็กใหม่ๆ ทุกวัน แต่ก็ไม่ได้หมายความว่าพวกเขาลืมเทคนิคเก่าๆ เช่น SQL Injections พวกเขายังคงเป็นหนึ่งในเวกเตอร์การโจมตีที่พบบ่อยที่สุดซึ่งง่ายต่อการดำเนินการและให้ผลลัพธ์ที่ประสบความสำเร็จ
- SQL Injection คืออะไร และเหตุใดจึงเป็นอันตราย
- การฉีด SQL ทำงานอย่างไร
- การฉีด SQL ในวง
- การฉีด SQL ตาบอด
- การฉีด SQL นอกแบนด์
- ภัยคุกคามนี้ยังคงเกี่ยวข้องหรือไม่?
- เคล็ดลับความปลอดภัยสำหรับการป้องกัน
- คำสุดท้าย
SQL Injection คืออะไร และเหตุใดจึงเป็นอันตราย

SQL Injection หรือที่เรียกว่า SQLi เป็นรูปแบบหนึ่งของการโจมตีแบบฉีดซึ่งทำให้แฮ็กเกอร์สามารถเรียกใช้คำสั่ง SQL ได้ การโจมตีด้วยการฉีดเป็นประเภทกว้างๆ ของเวกเตอร์การโจมตีที่แตกต่างกัน แต่พวกเขาทั้งหมดอนุญาตให้นักแสดงที่เป็นอันตรายดำเนินการป้อนข้อมูลที่เป็นอันตราย พวกเขาทำหน้าที่เป็นคำสั่งระบบซึ่งจะดำเนินการแล้ว
คำสั่ง SQL มักใช้เพื่อเพิ่มหรือดึงข้อมูลจากฐานข้อมูลต่างๆ ระบบการจัดการที่มีชื่อเสียงจำนวนมาก เช่น Microsoft SQL Server, Access และ Oracle ใช้คำสั่งเหล่านี้
เนื่องจากระบบการจัดการฐานข้อมูลที่ใช้กันอย่างแพร่หลายจำนวนมากใช้คำสั่ง SQL แฮ็กเกอร์จึงสามารถใช้ประโยชน์จากระบบเหล่านี้ผ่านการแทรก SQL หมายความว่าอาชญากรสามารถเข้าถึงและขโมยข้อมูลสำคัญที่เก็บไว้ในฐานข้อมูลได้ อาจรวมถึงสิ่งต่อไปนี้:
- ทรัพย์สินทางปัญญา.
- ข้อมูลบัตรเครดิต
- ข้อมูลลูกค้า.
- ที่อยู่
- ความลับของบริษัท
แนะนำสำหรับคุณ: Chrome vs Firefox: การเปรียบเทียบประสิทธิภาพ ความปลอดภัย และความเป็นส่วนตัว!
การฉีด SQL ทำงานอย่างไร

ในการดำเนินการโจมตีด้วยการฉีด SQL แฮ็กเกอร์จะต้องค้นหาอินพุตของผู้ใช้ที่มีช่องโหว่ภายในเว็บไซต์หรือแอปพลิเคชันภายในของบริษัท
ตัวอย่างเช่น เหยื่อใช้ WordPress สำหรับเว็บไซต์ของตน รหัสอาจมีช่องโหว่ของ SQL ที่ส่งข้อมูลผู้ใช้โดยตรงไปยังฐานข้อมูลโดยไม่มีการฆ่าเชื้อใดๆ หากแฮ็กเกอร์พบช่องโหว่ดังกล่าว พวกเขาสามารถส่งคำสั่งไปยังฐานข้อมูลที่ต้องการได้ จากนั้น เอาต์พุตของฐานข้อมูลจะกลับไปที่เบราว์เซอร์และทำให้แฮ็กเกอร์สามารถดำเนินการคำสั่งต่างๆ ได้ ด้วยวิธีนี้ พวกเขาสามารถดาวน์โหลดฐานข้อมูลทั้งหมด ตั้งค่าคำสั่งใหม่ แก้ไขบัญชีผู้ใช้ หรือสร้างบัญชีใหม่
มีสามรูปแบบหลักของการโจมตีด้วยการฉีด SQL:
- การฉีด SQL ในวง:
- การฉีด SQL ตามข้อผิดพลาด
- การฉีด SQL แบบอิงยูเนี่ยน
- การฉีด SQL ตาบอด:
- บูลีน
- ตามเวลา
- การฉีด SQL นอกแบนด์
การฉีด SQL ในวง
In-band SQL injection เป็นหนึ่งในประเภทที่พบมากที่สุดเนื่องจากง่ายและมีประสิทธิภาพ ที่นี่ ผู้โจมตีใช้ช่องทางการสื่อสารเดียวกันเพื่อดำเนินการโจมตีและรวบรวมผลลัพธ์ มีสองรูปแบบย่อย - การฉีด SQL แบบอิงตามข้อผิดพลาดและแบบยูเนี่ยน:
- การฉีด SQL ตามข้อผิดพลาด ช่วยให้แฮ็กเกอร์สามารถทำให้ฐานข้อมูลสร้างข้อความแสดงข้อผิดพลาดได้ จากนั้น พวกเขาสามารถใช้ข้อความแสดงข้อผิดพลาดเหล่านี้เพื่อรวบรวมข้อมูลเกี่ยวกับตัวฐานข้อมูลเอง
- การแทรก SQL แบบอิงยูเนี่ยน ช่วยให้ผู้ร้ายสามารถใช้ประโยชน์จากตัวดำเนินการ UNION SQL มันรวมคำสั่งต่าง ๆ ที่ฐานข้อมูลให้มาเพื่อรับการตอบสนอง HTTP เดียว การตอบสนองดังกล่าวมักจะมีข้อมูลที่แฮ็กเกอร์สามารถใช้ประโยชน์ได้
การฉีด SQL ตาบอด
การฉีด SQL แบบตาบอดขึ้นอยู่กับรูปแบบพฤติกรรมของเซิร์ฟเวอร์ พวกเขาดำเนินการช้ากว่ามาก แฮ็กเกอร์ปล่อยข้อมูลเพย์โหลดและตรวจสอบการตอบสนองของเซิร์ฟเวอร์เพื่อวิเคราะห์โครงสร้าง พวกเขาเรียกสิ่งนี้ว่า "คนตาบอด" เพราะข้อมูลไม่ได้ส่งไปยังแฮ็กเกอร์โดยตรง ดังนั้น พวกเขาจึงไม่สามารถเห็นข้อมูลใด ๆ เกี่ยวกับการหาประโยชน์ในวง มีสองรูปแบบ ได้แก่ Boolean และ Time-based:
- รูปแบบบูลีน ทำให้แฮ็กเกอร์สามารถส่งแบบสอบถาม SQL ซึ่งจะแจ้งให้ฐานข้อมูลส่งคืนข้อมูล ข้อมูลภายในการตอบสนอง HTTP เปลี่ยนแปลงขึ้นอยู่กับผลลัพธ์ก่อนหน้า
- การเปลี่ยนแปลงตามเวลา ช่วยให้ผู้ประสงค์ร้ายสามารถส่งแบบสอบถาม SQL ไปยังฐานข้อมูลได้โดยตรง ซึ่งบังคับให้ฐานข้อมูลต้องรอก่อนที่จะสามารถตอบสนองได้ ผู้โจมตีจะสังเกตเห็นเวลาที่จำเป็นสำหรับฐานข้อมูลในการตอบสนองและตัดสินใจว่าแบบสอบถามนั้นเป็นจริงหรือเท็จ ตามผลลัพธ์ การตอบสนอง HTTP ทันทีหรือล่าช้า
การฉีด SQL นอกแบนด์
การฉีด SQL นอกแบนด์ช่วยให้แฮ็กเกอร์สามารถโจมตีฐานข้อมูลได้เฉพาะเมื่อเปิดใช้งานคุณสมบัติเฉพาะบนเซิร์ฟเวอร์ฐานข้อมูล เป็นวิธีการฉีด SQL ที่ได้รับความนิยมน้อยที่สุด แฮ็กเกอร์จำนวนมากใช้แทนการแทรก Error-based และ Blind SQL

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

การฉีด SQL เป็นหนึ่งในรูปแบบการโจมตีทางไซเบอร์เชิงรุกที่เก่าแก่ที่สุดรูปแบบหนึ่ง แต่ก็ยังมีความเกี่ยวข้องอยู่มาก Open Web Application Security Project ระบุการแทรก SQL เป็นภัยคุกคามอันดับหนึ่งเมื่อสองปีก่อน Akamai ผู้ให้บริการระบบคลาวด์ได้สร้างรายงานสถานะของอินเทอร์เน็ต ซึ่งพบว่าการแทรก SQL มีส่วนทำให้เกิดการโจมตีบนเว็บถึง 65% ตั้งแต่ปี 2560 ถึง 2562 คุณจึงพูดได้ว่าการแทรก SQL ยังคงปรากฏอยู่ในสองในสามของการโจมตีเว็บ ในปีที่ผ่านมา.
ในไตรมาสแรกของปี 2017 เวกเตอร์เหล่านี้มีส่วนรับผิดชอบต่อการโจมตีในระดับแอปพลิเคชันถึง 44% ที่แย่ไปกว่านั้น ไม่มีเวกเตอร์การโจมตีแอปพลิเคชันรูปแบบอื่นใดที่เติบโตเร็วเท่ากับการฉีด SQL ในเดือนพฤศจิกายน 2018 มีการเพิ่มขึ้นอย่างมากอีกครั้งหนึ่ง แสดงให้เห็นว่ามีการพยายามโจมตีด้วยการฉีด SQL มากกว่า 35 ล้านครั้ง ผู้เชี่ยวชาญคิดว่าสาเหตุหลักของการเพิ่มขึ้นอย่างรวดเร็วนี้คือช่วงเทศกาลวันหยุด เป็นสิ่งที่เจ้าของเว็บไซต์ทุกคนควรทราบ โดยเฉพาะอย่างยิ่งหากพวกเขาอยู่ในอุตสาหกรรมค้าปลีก แต่แม้หลังจากช่วงเทศกาลวันหยุดสิ้นสุดลงแล้ว การแทรก SQL ยังคงเป็นภัยคุกคามที่คุณต้องระวัง
สหรัฐอเมริกาเป็นเป้าหมายสูงสุดสำหรับการโจมตีชั้นแอปพลิเคชัน ต้องเผชิญกับการโจมตีราว 3 พันล้านครั้งในเวลาเพียง 17 เดือน เหยื่อที่ได้รับความนิยมอื่นๆ ได้แก่ สหราชอาณาจักร เยอรมนี บราซิล อินเดีย ญี่ปุ่น แคนาดา ออสเตรเลีย อิตาลี และเนเธอร์แลนด์ ดังนั้นจึงปลอดภัยที่จะสันนิษฐานว่ามันยังคงเป็นภัยคุกคามขนาดใหญ่ และทุกบริษัทควรใช้มาตรการป้องกันที่ครอบคลุม
เคล็ดลับความปลอดภัยสำหรับการป้องกัน

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

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