2006/Mar/06

วันก่อนได้ไปสัมนาซึ่งทาง msdn ของ microsoft ได้จัดขึ้นในหัวการสัมนาที่ชื่อว่า developing secure application with studio .net 2005 ครับ โดยรวมแล้วก็อธิบายความสามารถของ product ตัวนี้เป็นส่วนใหญ่ จำได้ว่าได้เข้าไปลองเล่น web 2.0 ตั้งแต่beta แรกๆเลยตอนนั้นสุดยอดของความอืดเล่นครับเล่นเอาMemmory low เตือนทุกครั้งที่ใช้โปรแกรม เครื่องมีแรมแค่ 256ครับ ถามว่าMicrosoftพัฒนาเครื่องมือตัวนี้มาตามความคิดของผมแล้วมีทั้งข้อดีและข้อเสียในด้านพัฒนาโปรแกรม
ข้อดีก็คือสามารถพัฒนาโปรแกรมได้เร็ว เพราะเครื่องมือส่วนใหญ่แล้วล้วนลากวางจนแทบไม่ต้องเขียนcode เลย คนที่ไม่รู้ code ถ้ามีความเข้าใจก็สามารถทำได้ แต่ถ้าคนที่มีความรู้เรื่องObjectหรือ coding เป็นอย่างดีก็สบายเลยครับประยุกค์ใช้งานได้ดังใจเลยทีเดียว
ข้อเสีย อันนี้ในความคิดของผมเองในทางกลับกันเครื่องมือที่เยอะขนาดนี้กลับทำให้ programmer กลับกลายเป็นผู้พัฒนาอย่างเต็มตัวคือแทนที่จะเขียนprogramสร้างเครื่องมือมาใช้เอง อย่าง programmer สมัยก่อนแค่มีnotepade ตัวเดียวก็เขียน programได้ออกมาแบบไม่น่าเชื่อ ทำให้programmerสมัยใหม่ไม่รู้หรือข้ามขั้นตอนการเขียนโปรแกรมที่ควรค่าแก่การเรียนรู้อย่างหน้าเสียดาย เพราะมั่วแต่ลากวางจนไม่รู้ว่าไอ้ตัวที่ลากวางมันมาได้อย่างไร ก็แค่ความคิดครับยังไงทุกสิ่งทุกอย่างไม่เคยหยุดนิ่งอยู่แล้ว
มีอยู่ช่วงหนึ่งที่วิทยากรบรรยายเรื่องความปลอดภัย ในเรื่องของSql Injectionเรื่องนี้เป็นเรื่องเก่าแล้วก็ว่าได้ครับ แต่ต้องไม่เพิกเฉยเพราะจะทำให้ระบบได้รับความเสียหายได้จากกลุ่มคนที่ประสงค์ร้ายที่อาจเข้ามาได้ทุกเมื่อ แต่สำหรับคุนที่ไม่เรื่องSql injection คืออะไรเข้าไปอ่านได้
http://mvp.unixwiz.net/techtips/sql-injection.html
ใน.Net เองก็มีAdo.Net ที่สามารถแก้ปัญหาตรงนี้อย่างดีทีเดียวครับ มาดูตัวอย่างกันครับสังเกตุตรงcommment จะถูก Injection ได้ง่ายครับ

221 Dim constr As String = "Server=(local);Database=test;uid=test;pwd=test"

222 Dim conn As New SqlConnection(constr)

223 Try

224 conn.Open()

225 'Dim sqlstr As String = "select * from table where username='" + username.text + "' and password='" + password.text + "';"

226 Dim sqlstr As String = "select * from table where username=@username and password=@password;"

227 Dim cmd As New SqlCommand

228 cmd.CommandType = CommandType.Text

229 cmd.CommandText = sqlstr

230 cmd.Connection = conn

231 Dim pusername As New SqlParameter

232 pusername.SqlDbType = SqlDbType.VarChar

233 pusername.ParameterName = "@username"

234 pusername.Value = username.text

235 cmd.Parameters.Add(pusername)

236 Dim ppassword As New SqlParameter

237 ppassword.SqlDbType = SqlDbType.VarChar

238 ppassword.ParameterName = "@password"

239 ppassword.Value = password.text

240 cmd.Parameters.Add(ppassword)

241 Dim reader As SqlDataReader = cmd.ExecuteReader

242 'Next...read

243 Catch

244 Throw New Exception("Error:")

245 End Try

ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
อ่า ได้รับการแก้ไขซะแล้ว ว้าาา
#1  by  ฟิวส์ At 2006-03-06 16:10, 

<< Home