- ในบางครั้งนักพัฒนาใช้ method ‘+’ (concat) กับ String ที่เป็นคำสั่ง SQL เพื่อ query ข้อมูลที่ user ต้องการ ซึ่งทำให้เกิดช่องโหว่ในการโจมตีแบบ injection ได้
- เมื่อ Hacker ป้อน ค่าบางอย่างตามด้วย OR 1=1 จะทำให้ ตัว SQL ไป query ข้อมูลทั้งหมดใน Table ออกมา และในกรณีนี้ Hacker จะได้รายชื่อ User ทั้งหมดที่มีในตารางพร้อมทั้ง password มีการเก็บ User id และ Password ในตารางเดียวกัน
- ผลที่จะเป็นเช่นเดียวกับแบบ 1=1 เพราะมีการใช้เงื่อนไขสำหรับ User name และ Password เป็น “” OR “” = “”
- ในบางกรณีที่ตัว SQL มีการรองรับคำสั่งแบบหลายคำสั่งพร้อมกันทำให้ Hacker สามารถแก้ไข Database ได้โดยเพิ่มเครื่องหมาย ‘;’ ตามด้วยคำสั่ง SQL อีกอันต่อท้าย ซึ่งในกรณีนี้จะทำให้ Table Suppliers ถูกลบทิ้ง
- ในการเขียนคำสั่ง SQL มีการใส่ ‘?’ เพื่อเป็นสัญลักษณ์ที่แสดงให้เห็นว่าจะมีการนำ input จาก User มาใส่ แล้วจึงใช้คำสั่ง connection.query() ในการนำ input จาก User มาแทนที่ ‘?’ พร้อมกันคัดกรองคำสั่งที่ Hacker พยามแทรกมาออก
งานที่ฉันทำ
- ทำหน้าเว็บหลัก
- ย้ายจาก PostgreSQL เป็น MySQL
ใช้ JawsDB MySQL ใน Heroku |
- เอาหน้า Login/ Register เพิ่มใน Heroku
หน้า Sign Up |
หน้า Log In |
- ทำหน้า About
- นำ Cookies มาจดจำการ Log in
- หากทำการ Log in แล้วหากไปหน้า Log in ซ้ำจะไปหน้าแรกแทน
- ถ้า Log out จะลบ Cookies ออกไป
ปัญหาที่พบ
- ตัดสินใจไม่ได้ว่าจะให้ redirect ผ่าน node JS หรือ JavaScript
- ไม่ต้องการให้ User ทั่วไป Log in ได้ เนื่องจากไม่มีความจำเป็นในการ Log inสำหรับ User ธรรมดา
- รูปจาก Facebook สำหรับ about มีขนาดไม่เท่ากันทำให้ Layer เคลื่อน
No comments:
Post a Comment