สรุปย่อ ๆ การโจมตีที่พบได้บ่อยในสายเว็บ
- SQL Injection เป็นการโจมตีด้วยการใส่คำสั่งในภาษา SQL ลงไปในส่วนที่มีการสั่ง Query กับฐานข้อมูลต่าง ๆ ไม่ว่าจะเป็น MySQL, Sqlite และฐานข้อมูลอื่น ๆ ที่ใช้ภาษา SQL เพื่อให้โปรแกรมทำงานผิดพลาดหรือเพื่อให้โปรแกรมทำงานตามคำสั่งที่แฮกเกอร์กำหนด
- Cross Site Scripting (XSS) เป็นการโจมตีโดยการใส่แทรกสคริปต์หรือแท็ก HTML ลงในหน้าเว็บ
- Cross Site Request Forgery (CSRF) เป็นการโจมตีโดยใช้วิธีการ Social Engineer เพื่อหลอกให้เหยื่อคลิกลิงค์ Request อะไรบางอย่าง ที่ถูกฝั่งในหน้าเว็บ เพื่อทำการขโมยข้อมูล
ในการเขียนโปรแกรมภาษา Python เราจะสามารถป้องกันได้อย่างไร หนึ่งในวิธีง่าย ๆ ที่สามารถป้องกันการโจมตีนี้ได้แค่ป้องกันการใส่โค้ด HTML ครับ (CSRF ลิงค์จะถูกกรองอีกเป็นแค่ Text แต่ต้องมากรองออกอีกทีหลังจากป้องกันการใส่โค้ด HTML ครับ) พวกลิงค์หรือสคริปต์จะทำอันตรายต่อฐานข้อมูลและโปรแกรมเราไม่ได้
ผมใช้โมดูลมาตรฐานที่มากับ Python ที่มีชื่อว่า html ครับ
ในการกรองสคริปต์หรือโค้ด HTML จะใช้คำสั่ง
อักษรพิเศษจะกลับแปลงเป็นตัวอักษรที่ปลอดภัยครับhtml.escape(s, quote=True)
ยกเลิกการกรองทำได้โดยคำสั่ง (มีใน Python 3.4 ขึ้นไป)
ตัวอย่างการป้องกันการใส่สคริปต์หรือโค้ด HTML ใน Pythonhtml.unescape(s)
>>> import html >>> s = "<html>65586" >>> html.escape(s, quote=True) '<html>65586' >>> html.unescape(s) '<html>65586'
นักพัฒนาโปรแกรมที่ดีควรทดสอบโปรแกรมและหาช่องโหว่ของโปรแกรมตัวเองแล้วแก้ไขก่อนนำโปรแกรมนั้นไปใช้งานจริง
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)