Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การฉีด SQL คืออะไร? คุณจะป้องกันได้อย่างไร?


การฉีด 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)