Thursday, February 22, 2007

การป้องกัน SQL Injection ด้วย Parameter ใน .net

ตัวอย่าง

string ins_Sql;
ins_Sql = "INSERT INTO TBIPDPLIST(HN,DRUGCODE,RX_DATE)";
ins_Sql += " VALUES(@HN,@DRUGCODE,@RX_DATE)";
OleDbCommand insCmd = new OleDbCommand(ins_Sql, oledb_Conn);
insCmd.Parameters.Add("@HN", dbRead["HN"].ToString());

insCmd.Parameters.Add("@DRUGCODE", dbRead["DRUGCODE"].ToString());
insCmd.Parameters.Add("@RX_DATE", dbRead["RX_DATE"].ToString());

insCmd.ExecuteNonQuery();

จะเห็นว่าเราใช้วิธีการ @ นำหน้าชื่อ parameters

แล้วก็ใช้ method Parameters.Add ของ OleDbCommand ในการแทนที่ Parameter
เพียงเท่านี้ก็ป้องกัน SQL Injection ได้แล้วครับ

3 comments:

Anonymous said...

สวัสดีครับ ผมบังเอิญว่า ค้นหาข้อมูลจาก google แล้วก็ได้มาพบกับ block ของคุณ
ผมว่ามีประโยชน์กับผมพอสมควรเลยหล่ะ

ผมก็เป็น Software Developer เหมือนกันครับ แต่ว่าอยู่ในขั้นเริ่มต้น ที่ผมใช้ก็พวกตะกูล .net โดยเฉพาะ c# ผมเห็นคุณก็ใช้ c# ด้วยเหมือนกัน
ผมมีคำถามหลายเรื่องครับ แต่ไม่รู้ว่าจะถามได้จากที่ไหนดี ก็เลยมาโพสไว้ในนี้ ยังไงถ้าว่างช่วยกรุณาติดต่อกลับมาด้วยนะครับที่เมลล์นี้ ichokd@hotmail.com หรือว่าจะ add มาทาง msn ก็ได้นะครับ
ผมหวังว่าคุณคงได้อ่านข้อความนี้แล้วติดต่อมานะครับ
ขอบคุณมากครับ
iChok

Anonymous said...

Great work.

Anonymous said...

ผมเห็นด้วยว่า เป็นเว็บไซท์ที่ดี และให้ความรู้ ได้ประโยชน์ แต่สังเกตว่า เจ้าของ blog ไม่ได้เข้ามา update ต่ออีกแล้ว ไม่ทราบว่าเปลี่ยนไปทำอะไรที่ไหน หรือเปลี่ยนไปใช้ของที่ไหนอีก .. จะได้ตามไปดู อิอิ ขอบคุณสำหรับความรู้ที่มอบให้