ความจริงเขียนตั้งแต่เมื่อคืน แต่มาปรับปรุงและอัพในวันนี้นะ (เดี๋ยวหาว่าใช้เวลาทำงาน)
เรื่องนี้เป็นเรื่องใกล้ตัวที่สุดเลย คือ การเข้ารหัส Connection String เนื่องจากทุกโปรแกรมต้องมี connection string และก็ี่เป็นเรื่องที่สำคัญมากในการรักษาความปลอดภัยของ connection string ที่คนส่วนใหญ่ยังไม่ค่อยให้ความสำคัญนัก วันนี้เราลองมาดู Solution จาก .NET 2.0 ที่เขาเตรียมมาให้ใช้สำหรับการจัดเก็บ connection string ที่ปลอดภัยมากขึ้นครับ
ปกติในการเขียนโปรแกรมวินโดว์แอพพลิเคชันด้วย .NET นั้น เราจะเก็บ Connectionstring ไว้ในไฟล์ app.config ซึ่งเป็นไฟล์ข้อความธรรมดาที่สามารถเปิดอ่านได้ด้วยโปรแกรมอ่าน text ใดๆ ก็ได้ เช่น Notepad
แต่เราสามารถทำการเข้ารหัส connectionstring ของเราได้ โดยในวินโดว์แอพพลิเคชัีนจะต้องเข้ารหัสบนเครื่องที่ได้ติดตั้งโปรแกรมนั้นๆ ซึ่งต่างจากเว็บแอพพลิเคชันที่เข้ารหัสบนเว็บเซิร์ฟเวอร์เท่านั้น ทั้งนี้เพราะในการเข้ารหัสนั้นจะมีการใช้รหัสบางอย่างที่อยู่บนแต่ละเครื่อง
ดังนี้การเข้ารหัส connectionstring ของวินโดว์แอพพลิเคชันสามารถทำได้ขณะกำลังติดตั้งโปรแกรม โดยตัวติดตั้งจะทำการเข้ารหัส connectionstring บนเครื่องแต่ละเครื่องที่ติืดตั้งโปรแกรมนั้นให้ทันที
เริ่มต้นด้วยการปรับโปรแกรมนิดหน่อย
1. ให้เริ่มจากการ Add reference ตัว System.configuration เข้ามายังโปรแจคของเราก่อน
2. สร้าง class บนโปรแจคของเรา โดยให้สืบทอดการมาจาก Installer class ตามโค้ดด้านล่าง
Imports System.Configuration
Imports System.Configuration.Install
<System.ComponentModel.RunInstaller(True)> _
Public Class ProtectInstaller
Inherits Installer
Public Overrides Sub Install(ByVal stateSaver As IDictionary)
MyBase.Install(stateSaver)
' The action will occur when you install this application on client's computer.
' This action is implemented step of encrypt connectionStrings section in app.config file
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(Context.Parameters("assemblypath"))
Dim section As ConfigurationSection = config.GetSection("connectionStrings")
If section.SectionInformation.IsProtected = False Then
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
config.Save()
End If
End Sub
End Class
ตอนนี้โปรแจคของเราก็พร้อมที่จะทำการเข้ารหัส connectionstring เมื่อมีการติดตั้งโปรแกรมแล้วล่ะครับ แต่ไป เราจะมาสร้างชุดติดตั้งโปรแกรมครับ
การสร้างชุดติดตั้ง
1. เพิ่ม Setup project
2. เพิ่ม Project Output
3. กำหนด custom action
เลือก Custome Actions Editor
เลือก Add Customer Action
เลือก Primary output from ... (Active) ใน Application Folder จากนั้นกด OK
เลือก Primary output from ... (Active) ใน Application Folder จากนั้นกด OK
จากนั้นให้คอมไพล์ชุดติดตั้ง
ทดลองติดตั้งโปรแกรม
1. ติดตั้งโปรแกรมการชุดติดตั้งที่ได้คอมไฟล์ไว้แล้ว ซึ่งอยู่ใน bin\debug หรือ bin\release directory
2. เมื่อติดตั้งเรียบร้อยแล้ว ให้ลองดูที่ไฟล์ config ใน path ที่ได้ติดตั้งไว้ จะเห็นว่า connectionstring ได้ถูกเข้ารหัสไว้แล้ว
เป็นวิธีง่ายๆ แต่ได้ผลนะครับเพียงแค่เพิ่มขั้นตอนอีกเล็กน้อยเท่านั้นก่อนทำชุดติดตั้งโปรแกรม ก็ทำให้ connectstring มีความปลอดภัยแล้วครับ
-- NooM --
ทดลองติดตั้งโปรแกรม
1. ติดตั้งโปรแกรมการชุดติดตั้งที่ได้คอมไฟล์ไว้แล้ว ซึ่งอยู่ใน bin\debug หรือ bin\release directory
2. เมื่อติดตั้งเรียบร้อยแล้ว ให้ลองดูที่ไฟล์ config ใน path ที่ได้ติดตั้งไว้ จะเห็นว่า connectionstring ได้ถูกเข้ารหัสไว้แล้ว
เป็นวิธีง่ายๆ แต่ได้ผลนะครับเพียงแค่เพิ่มขั้นตอนอีกเล็กน้อยเท่านั้นก่อนทำชุดติดตั้งโปรแกรม ก็ทำให้ connectstring มีความปลอดภัยแล้วครับ
-- NooM --
No comments:
Post a Comment