การฉีด SQL เป็นเทคนิคการแฮ็คเว็บ เป็นเทคนิคการแทรกโค้ดที่แทรกโค้ดที่เป็นอันตรายลงในฐานข้อมูลของคุณและทำลายฐานข้อมูล นี่คือการแทรกโค้ดที่เป็นอันตรายผ่านการป้อนหน้าเว็บ
สาเหตุหลักของการฉีด SQL คือการให้ข้อมูลอย่างชาญฉลาดในการสืบค้น SQL ซึ่งจัดการข้อมูลภายในฐานข้อมูลของเรา
สมมติว่าเรามีตารางที่มีข้อมูลนักเรียน นักเรียนแต่ละคนสามารถดูข้อมูลของตนเองได้โดยใช้รหัสนักเรียนของเขา แบบสอบถาม SQL ได้รับการออกแบบมาให้ดึงข้อมูลรหัสนักศึกษาจากนักเรียน
ตอนนี้ นักเรียนสามารถป้อนรหัสนักเรียนเป็น “12345 หรือ 1=1” สิ่งนี้แปลเป็นข้อความค้นหา followinq
เลือก * จากนักเรียนโดยที่ id==12345 หรือ 1=1
ตอนนี้ แบบสอบถามด้านบนจะส่งคืนบันทึกของนักเรียนคนอื่นด้วย เพราะ 1=1 เป็นจริงเสมอ ดังนั้น ข้อมูลของนักเรียนคนอื่นๆ จึงไม่ปลอดภัยและมีแนวโน้มว่าจะถูกแฮ็กเกอร์นำไปใช้ในทางที่ผิด
โมดูลตัวเชื่อมต่อ Mysql มีวิธีการหลีกเลี่ยงค่าแบบสอบถามเพื่อป้องกันการฉีด SQL ค่าการสืบค้นสามารถหลีกเลี่ยงได้โดยใช้ตัวยึดตำแหน่ง %s
สมมติว่าเรามีตารางชื่อ “MyTable”
<ก่อนหน้า>+----------+---------+-----------+-----------+ | ชื่อ | คลาส | เมือง | เครื่องหมาย |+----------+---------+-----------+-----------+| การัน | 4 | อมฤตสาร์ | 95 || ซาฮิล | 6 | อมฤตสาร์ | 93 || กฤติ | 3 | Batala | 88 || คูชิ | 9 | เดลี | 90 || กีรติ | 5 | เดลี | 85 |+----------+---------+-----------+-----------+ตัวอย่าง
นำเข้า mysql.connectordb=mysql.connector.connect(host="your host", user="your username", password="yourpassword",database="database_name")cursor=db.cursor()query=" SELECT * FROM Students WHERE Name=%s"name=("Karan",)cursor.execute(query,name)for row in myresult:print(row)
โค้ดด้านบนแสดงการใช้ตัวยึดตำแหน่งเพื่อหลีกเลี่ยงค่าการสืบค้น
ผลลัพธ์
(‘Karan’, 4, ‘Amritsar’ , 95)