ข้อมูลองค์ความรู้โดย
ศิริวรรณ ติรเลิศ
ตำแหน่ง Executive Director

เรื่องน่ารู้เกี่ยวกับความปลอดภัยของ MySQL Server

ประเภทอุตสาหกรรม :   เครื่องจักรกล, เครื่องหนัง, จิวเวอรี่และเครื่องประดับ, ชิ้นส่วนยานยนต์, ผลิตอาหาร, พลังงาน, พลาสติก, ไฟฟ้า, ไม้และเฟอร์นิเจอร์, โรงแรมและรีสอร์ท, สิ่งทอและเครื่องนุ่งห่ม, เหล็ก, อิเล็กโทรนิคส์, อุตสาหกรรมบริการ

ประเภททางด้าน IT หลัก :   Data Management & Analysis
ประเภททางด้าน IT ย่อย :   Database
  ลงข้อมูลเมื่อ 13:49:41 13/07/2010
  Page View (2852) แบ่งปัน

MySQL เป็นฐานข้อมูลแบบ open source ที่ได้รับความนิยมในการใช้งานสูงสุดโปรแกรมหนึ่งบนเครื่องให้บริการ มีความสามารถในการจัดการกับฐานข้อมูลด้วยภาษา SQL (Structures Query Language) อย่างมีประสิทธิภาพ มีความรวดเร็วในการทำงาน รองรับการทำงานจากผู้ใช้หลายๆ คนและหลายๆ งานได้ในขณะเดียวกัน

MySQL ถูกพัฒนาขึ้นโดย MySQL AB โดยมีลิขสิทธิ์การใช้งาน 2 แบบ นั่นคือ ผู้ดูแลระบบสามารถใช้งานซอฟต์แวร์ MySQL ได้โดยไม่มีค่าใช้จ่ายใดๆ ภายใต้ลิขสิทธิ์ของ GNU General Public License (http://www.gnu.org/licenses/) หรืออาจเลือกใช้แบบที่มีลิขสิทธิ์ทางการค้าของ MySQL AB ซึ่งเป็นผู้ผลิตและพัฒนาซอฟต์แวร์โดยตรงก็ได้ หากไม่ต้องการเกี่ยวข้องกับข้อตกลงเรื่อง GPL รายละเอียดเพิ่มเติมเกี่ยวกับโปรแกรม MySQL สามารถหาข้อมูลได้จาก http://www.mysql.com

คำอธิบายเพิ่มเติมเกี่ยวกับหน้าที่ ความสามารถและการทำงานของโปรแกรม MySQL มีดังต่อไปนี้

  • MySQL ถือเป็นระบบจัดการฐานข้อมูล (DataBase Management System (DBMS))
    ฐานข้อมูลมีลักษณะเป็นโครงสร้างของการเก็บรวบรวมข้อมูล การที่จะเพิ่มเติม เข้าถึงหรือประมวลผลข้อมูลที่เก็บในฐานข้อมูลจำเป็นจะต้องอาศัยระบบจัดการฐานข้อมูล ซึ่งจะทำหน้าที่เป็นตัวกลางในการจัดการกับข้อมูลในฐานข้อมูลทั้งสำหรับการใช้งานเฉพาะ และรองรับการทำงานของแอพลิเคชันอื่นๆ ที่ต้องการใช้งานข้อมูลในฐานข้อมูล เพื่อให้ได้รับความสะดวกในการจัดการกับข้อมูลจำนวนมาก MySQL ทำหน้าที่เป็นทั้งตัวฐานข้อมูลและระบบจัดการฐานข้อมูล
  • MySQL เป็นระบบจัดการฐานข้อมูลแบบ relational
    ฐานข้อมูลแบบ relational จะทำการเก็บข้อมูลทั้งหมดในรูปแบบของตารางแทนการเก็บข้อมูลทั้งหมดลงในไฟล์เพียงไฟล์เดียว ทำให้ทำงานได้รวดเร็วและมีความยืดหยุ่น นอกจากนั้น แต่ละตารางที่เก็บข้อมูลสามารถเชื่อมโยงเข้าหากันทำให้สามารถรวมหรือจัดกลุ่มข้อมูลได้ตามต้องการ โดยอาศัยภาษา SQL ที่เป็นส่วนหนึ่งของโปรแกรม MySQL ซึ่งเป็นภาษามาตรฐานในการเข้าถึงฐานข้อมูล
  • MySQL แจกจ่ายให้ใช้งานแบบ open source
    นั่นคือ ผู้ใช้งาน MySQL ทุกคนสามารถใช้งานและปรับแต่งการทำงานได้ตามต้องการ สามารถดาวน์โหลดโปรแกรม MySQL ได้จากอินเทอร์เน็ตและนำมาใช้งานโดยไม่มีค่าใช้จ่ายใดๆ

ในระบบปฏิบัติการ Red Hat Linux นั้น มีโปรแกรมที่สามารถใช้งานเป็นฐานข้อมูลให้ผู้ดูแลระบบสามารถเลือกใช้งานได้หลายโปรแกรม เช่น MySQL และ PostgreSQL ผู้ดูแลระบบสามารถเลือกติดตั้งได้ทั้งในขณะที่ติดตั้งระบบปฏิบัติการ Red Hat Linux หรือจะติดตั้งภายหลังจากที่ติดตั้งระบบปฏิบัติการก็ได้ อย่างไรก็ตาม สาเหตุที่ผู้ใช้งานจำนวนมากนิยมใช้งานโปรแกรม MySQL คือ MySQL สามารถทำงานได้อย่างรวดเร็ว น่าเชื่อถือและใช้งานได้ง่าย เมื่อเปรียบเทียบประสิทธิภาพในการทำงานระหว่างโปรแกรม MySQL และ PostgreSQL โดยพิจารณาจากการประมวลผลแต่ละคำสั่งได้ผลลัพธ์ดังรูปที่ 1 
นอกจากนั้น MySQL ถูกออกแบบและพัฒนาขึ้นมาเพื่อทำหน้าเป็นเครื่องให้บริการรองรับการจัดการกับฐานข้อมูลขนาดใหญ่ ซึ่งการพัฒนายังคงดำเนินอยู่อย่างต่อเนื่อง ส่งผลให้มีฟังก์ชันการทำงานใหม่ๆ ที่อำนวยความสะดวกแก่ผู้ใช้งานเพิ่มขึ้นอยู่ตลอดเวลา รวมไปถึงการปรับปรุงด้านความต่อเนื่อง ความเร็วในการทำงาน และความปลอดภัย ทำให้ MySQL เหมาะสมต่อการนำไปใช้งานเพื่อเข้าถึงฐานข้อมูลบนเครือข่ายอินเทอร์เน็ต

 

ความเสี่ยงและวิธีการสร้างความปลอดภัยให้ฐานข้อมูล

ก่อนที่จะกล่าวถึงขั้นตอนการปรับแต่งค่าความปลอดภัยให้กับโปรแกรม MySQL ผู้ดูแลระบบควรจะต้องทราบถึงความเสี่ยงที่เกิดขึ้นจากการใช้งานฐานข้อมูลและหลักปฏิบัติโดยทั่วไปในการสร้างความปลอดภัยให้ฐานข้อมูลก่อน ซึ่งรายละเอียดที่จะอธิบายในหัวข้อนี้จะกล่าวถึงภาพรวม เพื่อให้ผู้ดูแลระบบสามารถนำไปประยุกต์ใช้ได้กับฐานข้อมูลชนิดอื่นๆ

ความปลอดภัยของฐานข้อมูลเป็นสิ่งสำคัญมาก เนื่องจากข้อมูลที่เก็บไว้ในฐานข้อมูลถือเป็นองค์ประกอบหลักในการดำเนินงานขององค์กรและมีความอ่อนไหวค่อนข้างสูง ได้แก่ เช่น ข้อมูลทางธุรกิจ ข้อมูลลูกค้า ข้อมูลพนักงาน ข้อมูลลับหรือข้อมูลที่เผยแพร่บนเว็บไซต์ขององค์กร วิธีการสร้างความปลอดภัยให้กับฐานข้อมูลค่อนข้างเป็นเรื่องเฉพาะ และมีความซับซ้อนแตกต่างจากการสร้างความปลอดภัยให้กับเครือข่ายหรือระบบปฏิบัติการ

ทั้งนี้ จุดบกพร่องที่ทำให้เกิดความเสี่ยงต่อความไม่ปลอดภัยของฐานข้อมูลมีสาเหตุจาก ความซับซ้อนของระบบฐานข้อมูล การเก็บรหัสผ่านอย่างไม่ปลอดภัย การตั้งค่าการทำงานที่ผิดพลาด หรือ backdoor ของระบบที่ผู้ดูแลระบบไม่ทราบ การลดความเสี่ยงของข้อบกพร่องเหล่านี้ทำได้โดยการกำหนดหลักปฏิบัติในการใช้งานฐานข้อมูลดังนี้

  • ให้สิทธิ์การใช้งานกับผู้ใช้ตามความจำเป็นเท่านั้น ผู้ใช้งานฐานข้อมูลแต่ละคนควรจะได้รับสิทธิ์การใช้งานเฉพาะที่จำเป็นต่อการดำเนินงานของแต่ละคน
  • ทำการป้องกันในหลายๆ ระดับ เช่น ระดับของการขอเข้าใช้งาน ระดับของสิทธิ์การใช้งาน หรือระดับของขอบเขตของฐานข้อมูลที่ให้ใช้งาน
  • การป้องกันการบุกรุกเป็นสิ่งที่ควรปฏิบัติ แต่ผู้ดูแลจะต้องตรวจสอบการละเมิดความปลอดภัยด้วย
  • นำกระบวนการเข้ารหัสมาใช้งานหากเป็นไปได้
  • กำหนดนโยบายและขั้นตอนปฏิบัติด้านความปลอดภัยที่ชัดเจน รัดกุม

การสร้างความปลอดภัยให้กับฐานข้อมูลจะต้องตั้งอยู่บนพื้นฐานต่อไปนี้ คือ

  1. ความลับและความปลอดภัย: ข้อมูลจะต้องไปถูกเปิดเผยต่อผู้ที่ไม่ได้รับสิทธิ์ในการเข้าถึง
  2. ความถูกต้อง ความสมบูรณ์และการตรวจสอบตัวตนผู้ใช้งาน: ข้อมูลจะต้องไม่ถูกแก้ไขหรือยักยอกทั้งโดยเจตนาร้ายหรือโดยไม่เจตนาก็ตาม นอกจากนั้น จะต้องพิสูจน์ได้ว่าต้นทางของข้อมูลมาจากที่ใดหรือใคร
  3. ความพร้อมใช้และความสามารถในการกู้คืน: ระบบฐานข้อมูลจะต้องถูกปกป้องให้พร้อมใช้งานได้ตลอดเวลา รวมถึงจะต้องกู้คืนได้หากข้อมูลสูญหาย

นอกจากนั้น การสร้างความปลอดภัยให้กับฐานข้อมูลจำเป็นต้องมั่นใจว่าได้มีการป้องกันถึงระดับลึก ได้แก่ การสร้างความปลอดภัยให้กับเครือข่าย ซึ่งอาจทำได้โดยการป้องกันที่ไฟร์วอลล์ เราเตอร์ ระบบตรวจจับผู้บุกรุก (IDS) และการสร้างความปลอดภัยให้กับระบบปฏิบัติการ เพื่อให้แน่ใจได้ว่าการเข้าถึงฐานข้อมูลโดยไม่ได้รับอนุญาตจะไม่เป็นผลมาจากการกำหนดค่าที่ผิดพลาดให้กับระบบปฏิบัติการและอุปกรณ์เหล่านั้น

หลักการสำคัญในการสร้างความปลอดภัยให้กับฐานข้อมูลนั้น ผู้ดูแลระบบควรจะคำนึงถึงองค์ประกอบต่อไปนี้ เพื่อนำไปพิจารณาประยุกต์ใช้กับระบบฐานข้อมูลของตนเองตามความเหมาะสม

  • การตรวจสอบตัวตนผู้ใช้งาน
    จะต้องมั่นใจว่ามีการตรวจสอบตัวตนของผู้ใช้งานทุกคนที่ติดต่อกับฐานข้อมูล ในระดับต่ำสุดคือการนำเอารหัสผ่านมาใช้งานสำหรับทุกการติดต่อ ซึ่งรหัสผ่านเหล่านี้จะต้องได้รับการเก็บรักษาอย่างปลอดภัยในฐานข้อมูลและถูกเข้ารหัสอย่างเหมาะสม ควรมีข้อกำหนดนเรื่องการใช้งานรหัสผ่าน ได้แก่ กำหนดความยาวขั้นต่ำของรหัสผ่านที่ใช้ กำหนดว่ารหัสผ่านจะต้องประกอบด้วยตัวอักษรหรือตัวเลขรวมกับอักขระพิเศษ และไม่ให้ใช้งานรหัสผ่านที่เดาได้ง่าย เป็นต้น
  • การควบคุมการเข้าถึงออบเจ็กต์ใดๆ และการตรวจสอบแอพลิเคชันที่อนุญาตให้ใช้งาน
    ออบเจ็กต์ของฐานข้อมูลประกอบด้วย ตาราง ซินโนนีมม์ (synonymn) วิว (view) อินเด็กซ์ (index) สตอร์โพรซีเจอร์ (store procedure) และทริกเกอร์ (trigger) ซึ่งสามารถควบคุมการอนุญาตให้เข้าถึงออบเจ็กต์เหล่านี้ได้โดยกำหนดไว้ที่สิทธิ์การใช้งานฐานข้อมูล ซึ่งควรได้รับการกำหนดตั้งแต่ขั้นตอนของการออกแบบ ทั้งนี้ผู้ดูแลฐานข้อมูลหรือผู้ออกแบบฐานข้อมูลจะต้องคำนึงถึงหลักการที่จะให้สิทธิ์แก่ผู้ใช้งานแต่ละคนให้น้อยที่สุดเท่าที่จะเป็นไปได้
    การควบคุมการเข้าถึงออบเจ็กต์เหล่านี้ มีวิธีการที่แตกต่างกันตามแต่ละชนิดของออบเจ็กต์ เช่น การใช้ซินโนนีมม์จะช่วยให้การอ้างถึงแต่ละตารางในฐานข้อมูลสามารถทำได้โดยไม่จำเป็นต้องทราบว่าเจ้าของตารางดังกล่าวคือใคร เป็นการซ่อนโครงสร้างของฐานข้อมูลจากผู้ใช้งานโดยที่ผู้ดูแลยังสามารถตรวจสอบได้ว่าใครมาใช้ตารางใดในฐานข้อมูลบ้าง การสร้างความปลอดภัยให้กับออบเจ็กต์วิว ทำได้โดยการควบคุมการเข้าถึงในระดับแถวและคอลัมน์ก่อนที่แต่ละตารางจะถูกนำมารวมไว้ด้วยกัน เป็นต้น 
    หรือหากใช้งานสถาปัตยกรรม 3-tier ซึ่งมีแอพลิเคชันเซิร์ฟเวอร์ทำหน้าที่รอรับการเรียกใช้งานแอพลิเคชันทั้งหมดจากเครื่องขอเข้าใช้บริการและติดต่อกับฐานข้อมูล จำเป็นต้องกำหนดให้เครื่องขอใช้งานแสดงตัวตนกับเครื่องแอพลิเคชันเซิร์ฟเวอร์ และให้แอพลิเคชันเซิร์ฟเวอร์แสดงตัวตนกันกับฐานข้อมูลก่อนจึงจะอนุญาตให้เข้าใช้งานตามต้องการได้
  • นโยบายและขั้นตอนปฏิบัติในการดูแลระบบ
    ต้องกำหนดนโบายที่ชัดเจนเกี่ยวกับการใช้งานและการดูแลระบบ พร้อมทั้งกำหนดขั้นตอนปฏิบัติต่างๆ มาบังคับใช้ตามนโยบายดังกล่าวเป็นลายลักษณ์อักษร โดยแสดงรายละเอียดถึงข้อบังคับด้านความปลอดภัยและการบริหารความเสี่ยง ภายในต้องประกอบด้วยมาตรฐานการใช้งานบัญชีรายชื่อผู้ใช้ รหัสผ่าน กฎและออบเจ็กต์ รวมถึงการตรวจสอบและการบันทึกล็อก
  • การใช้งานค่า configuration เริ่มต้นที่ปลอดภัย
    ฐานข้อมูลบางชนิดจะมีชื่อผู้ใช้และรหัสผ่านที่กำหนดไว้เป็นค่าดีฟอลต์เริ่มต้น ซึ่งเป็นที่ทราบกันดีในกลุ่มผู้ใช้ ค่าดังกล่าวนี้ทำให้ผู้ที่ทราบสามารถเข้าถึงฐานข้อมูลได้ในหลายระดับ ดังนั้นผู้ดูแลจึงควรยกเลิกหรือเปลี่ยนแปลงค่ารหัสผ่านทันทีหลังจากเข้าใช้งานครั้งแรก นอกจากนั้น ไฟล์ที่เกี่ยวข้องกับการทำงานของระบบฐานข้อมูลจะต้องได้รับการจำกัดการเข้าถึง ทั้งเพื่ออ่าน เขียนหรือเรียกใช้งานจากผู้ไม่เกี่ยวข้อง เพื่อที่ผู้บุกรุกจะไม่สามารถเปลี่ยนแปลงค่าการทำงานใดๆ ได้ สิ่งที่สำคัญที่สุดก็คือ ผู้ดูแลระบบจะต้องปรับแต่งค่าการทำงานให้เหมาะสมกับระบบและการใช้งานของตน
  • การตรวจสอบการทำงาน
    การตรวจสอบการทำงานของฐานข้อมูลช่วยให้ผู้ดูแลสามารถตรวจจับกิจกรรมที่เกิดขึ้นโดยไม่ได้รับอนุญาตหรือกิจกรรมที่มีจุดประสงค์ร้าย กิจกรรมที่ควรได้รับการตรวจสอบระบบประกอบด้วย
    • ความพยามยามในการติดต่อฐานข้อมูลที่ไม่ประสบความสำเร็จ
    • การเปิดและปิดฐานข้อมูล
    • การเรียกดู การแก้ไขและการลบข้อมูลออกจากตาราง
    • การสร้างและการลบออบเจ็กต์
    • การเรียกใช้งานโปรแกรม 
    ผู้ดูแลควรจัดเก็บข้อมูลเหล่านี้ไว้ในรูปของไฟล์ล็อกหรือฐานข้อมูลล็อก ซึ่งข้อมูลที่ควรเก็บบันทึกในล็อกประกอบด้วย ใครเป็นผู้สร้างข้อมูล ใครเป็นผู้แก้ไขข้อมูล และข้อมูลใดที่ถูกเปลี่ยนแปลงแก้ไข เป็นต้น
  • แผนการสำรองข้อมูลและการกู้คืนระบบ
    ความเสียหายของฐานข้อมูล การถูกทำลายโดยอุบัติเหตุ และกิจกรรมที่เกิดขึ้นโดยไม่ได้รับอนุญาตหรือมีจุดประสงค์ร้ายต่อฐานข้อมูล อาจนำไปสู่ความเสียหายอย่างรุนแรงของฐานข้อมูล หากขาดแผนการสำรองข้อมูลที่เหมาะสม กระบวนการสำรองข้อมูลและการกู้คืนระบบควรจะได้รับการทดสอบในช่วงเวลาปกติ และการเก็บข้อมูลสำรองไว้ภายนอกองค์กรจะช่วยให้การกู้คืนข้อมูลจากความเสียหายทำได้รวดเร็ว
    กระบวนการสำรองข้อมูลควรจะได้รับการทดสอบให้มั่นใจว่า
    • พนักงานเกิดความเชื่อมั่นต่อวิธีการกู้คืนข้อมูล
    • แผนการสำรองข้อมูลและการกู้คืนระบบได้รับการวิเคราะห์ตรวจสอบอย่างเหมาะสม
    • ผู้ดูแลสามารถอ่านข้อมูลจากเทปสำรองข้อมูลโดยใช้ไดรฟ์อื่นต่างหากจากที่ใช้ในการเขียนข้อมูลได้
    นอกจากนั้น แผนการสำรองข้อมูลจะต้องกำหนดถึงวิธีการในการสำรองข้อมูล ซึ่งมีทางเลือกให้ใช้งานได้หลายรูปแบบ ได้แก่
    • การสำรองข้อมูลแบบ cold คือการสำรองข้อมูลในขณะที่ไม่มีการใช้งานฐานข้อมูล
    • การสำรองข้อมูลแบบ hot คือการสำรองข้อมูลในขณะที่ฐานข้อมูลถูกใช้งาน
    • การสำรองข้อมูลแบบ logical คือการสำรองข้อมูลในช่วงเวลาใดช่วงเวลาหนึ่ง ในขณะที่ฐานข้อมูลถูกใช้งาน

การสร้างความปลอดภัยให้โปรแกรม MySQL

ผู้ดูแลระบบที่ใช้งานโปรแกรม MySQL เป็นฐานข้อมูลในเครื่องให้บริการใดๆ จำเป็นต้องทราบถึงวิธีการสร้างความปลอดภัยให้กับโปรแกรม MySQL ที่ใช้งาน เนื่องจากการใช้งานฐานข้อมูลทำให้เกิดความเสี่ยงต่อความปลอดภัยของเครื่องตามที่ได้อธิบายแล้วข้างต้น สำหรับหัวข้อนี้จะแสดงรายละเอียดถึงวิธีการในการสร้างความปลอดภัยให้โปรแกรม MySQL บนระบบปฏิบัติการ Red Hat Linux โดยเฉพาะ

หากผู้ดูแลระบบติดตั้งโปรแกรม MySQL โดยเลือกติดตั้งในขณะที่ติดตั้งระบบปฏิบัติการ หรือติดตั้งโดยใช้แพ็คเกจชนิด RPM จะมีข้อดีคือ ผู้ดูแลระบบจะสามารถใช้โปรแกรม up2date (ตามที่ได้อธิบายไว้ในบทก่อนหน้านี้) ในการตรวจสอบแก้ไขช่องโหว่ที่เกิดขึ้นกับโปรแกรมได้ ในทางตรงกันข้าม หากผู้ดูแลระบบเลือกติดตั้งโปรแกรมโดยคอมไพล์จากไฟล์ต้นฉบับด้วยตนเอง จะมีข้อดีคือโปรแกรม MySQL ที่ได้จะมีความยืดหยุ่นมากกว่า ผู้ดูแลระบบสามารถเลือกออปชันและไลบรารี่ที่จะใช้งานได้ตามต้องการมากกว่า อย่างไรก็ตาม ไม่มีออปชันใดๆ เกี่ยวข้องกับการสร้างความปลอดภัยที่ควรได้รับการพิจารณาเป็นพิเศษในการติดตั้งโปรแกรม MySQL โดยการคอมไพล์จากไฟล์ต้นฉบับ จึงไม่นำมาอธิบายในที่นี้ สำหรับผู้ดูแลระบบที่ต้องการดาวน์โหลดโปรแกรม MySQL หรือตรวจสอบเวอร์ชันของโปรแกรม MySQL ที่จะใช้งาน สามารถหาข้อมูลได้ที่ http://www.mysql.com/downloads/index.html

ก่อนที่จะอธิบายถึงวิธีการสร้างความปลอดภัยให้โปรแกรม MySQL จะขออธิบายถึงการทำงานของโปรแกรม MySQL สักเล็กน้อย โปรแกรม MySQL ทำงานเป็นฐานข้อมูลและระบบจัดการฐานข้อมูลบนเครื่องให้บริการ โดยเปิดให้ผู้ใช้งานติดต่อฐานข้อมูลผ่านพอร์ต 3306 บนโพรโตคอล TCP ของเครื่องให้บริการ (ค่าดีฟอลต์ของโปรแกรม) หลังจากที่สั่งให้โปรแกรม MySQL เริ่มต้นทำงานจะเกิดการสร้างเดมอนชื่อ mysqld ไว้รอรับการติดต่อ ซึ่งการใช้งานฐานข้อมูลทำได้ 2 วิธีคือ การเข้าใช้ฐานข้อมูลโดยตรงผ่านโปรแกรม mysql และการใช้งานผ่านโปรแกรมที่เขียนขึ้นเพื่อใช้ติดต่อฐานข้อมูล เช่น โปรแกรมที่ถูกเขียนขึ้นด้วยภาษา PHP เป็นต้น ผู้ที่จะเข้าใช้งานฐานข้อมูลได้จะต้องได้รับการตรวจสอบสิทธิ์และพิสูจน์ตัวตนผู้ใช้ ซึ่งบัญชีรายชื่อผู้ใช้ของโปรแกรม MySQL นี้แยกจากบัญชีผู้ใช้งานของระบบโดยเด็ดขาด ไม่มีความเกี่ยวข้องกันแต่อย่างใด โดยจะถูกจัดเก็บและจัดการผ่านฐานข้อมูลของ MySQL ที่ใช้งาน นอกจากนั้น ผู้ดูแลระบบควรจะสร้างผู้ใช้งานในระบบชื่อ mysql และกลุ่มผู้ใช้ชื่อ mysql มารองรับการทำงานของโปรแกรม MySQL ซึ่งจะอธิบายถึงการนำไปใช้ในลำดับต่อไป

วิธีการสร้างความปลอดภัยให้กับโปรแกรม MySQL ทำได้ในหลายระดับ ซึ่งผู้ดูแลระบบสามารถเลือกนำไปปฏิบัติได้ตามรูปแบบและจุดประสงค์การใช้งาน แบ่งเป็นส่วนๆ ได้ดังนี้

  • การเริ่มต้นใช้งาน และการเรียกใช้งานโปรแกรม MySQL
  • ระบบและวิธีการตรวจสอบสิทธิ์ของโปรแกรม MySQL
  • ไฟล์ล็อกของโปรแกรม MySQL
  • การจัดการเกี่ยวกับเจ้าของไฟล์ที่เกี่ยวข้องกับโปรแกรม MySQL ในระบบปฏิบัติการ
  • ข้อควรระวังที่เกี่ยวข้องกับความปลอดภัยของโปรแกรม MySQL

ซึ่งจะได้อธิบายแต่ละหัวข้อโดยละเอียดในลำดับต่อไป

การเริ่มต้นใช้งาน และการเรียกใช้งานโปรแกรม MySQL

หลังจากที่ผู้ดูแลระบบติดตั้งโปรแกรม MySQL แล้ว ผู้ดูแลระบบจะต้องสั่งให้โปรแกรม MySQL สร้างฐานข้อมูลเริ่มต้นโดยใช้คำสั่ง # ./mysql_install_db ทำให้เกิดการสร้างฐานข้อมูล 2 ฐานข้อมูล คือ mysql และ test

การสั่งให้โปรแกรม MySQL เริ่มต้นทำงานทำได้โดยการสั่ง # ./safe_mysqld --user=mysql & (คำสั่ง safe_mysqld อยู่ในไดเรกทอรี /path_to_mysql/bin/) ซึ่งจะทำให้เกิดการสร้างเดมอนชื่อ mysqld ไว้รอรับการติดต่อที่พอร์ต 3306/TCP ของเครื่อง การกำหนดออปชัน --user=mysql เป็นการกำหนดชื่อเจ้าของโพรเซสชนิดเดมอนชื่อ mysqld ที่จะถูกสร้างขึ้น ซึ่งเจ้าของโพรเซสนี้จะต้องได้รับสิทธิ์ในการเข้าใช้งานไฟล์และไดเรกทอรีของฐานข้อมูล หากไม่กำหนดโพรเซสดังกล่าวจะเป็นของผู้ดูแลระบบ ซึ่งทำให้ความปลอดภัยของระบบลดลง

สิ่งแรกที่ผู้ดูแลระบบต้องดำเนินการคือ การกำหนดรหัสผ่านให้กับผู้ดูแลฐานข้อมูล (root) ซึ่งผู้ดูแลฐานข้อมูลนี้จะเป็นผู้จัดการทั้งหมดเกี่ยวกับฐานข้อมูล ได้รับสิทธิ์ให้กระทำการใดๆ ก็ได้กับฐานข้อมูลที่จะมีต่อไป เช่น การสร้างบัญชีชื่อผู้ใช้รายอื่นๆ การสร้างฐานข้อมูลใหม่ และการให้สิทธิ์การใช้งานฐานข้อมูลแก่ผู้ใช้ เป็นต้น เนื่องจากโปรแกรม MySQL ไม่ได้กำหนดค่าดีฟอลต์ของรหัสผ่านของผู้ดูแลฐานข้อมูล นั่นคือ หลังจากที่ติดตั้งโปรแกรม MySQL แล้ว ทันที่ที่สั่งให้โปรแกรม MySQL เริ่มทำงาน ใครก็ได้สามารถติดต่อใช้งานฐานข้อมูลมายังเดมอน mysqld ที่รอรับการติดต่อด้วยสิทธิ์ของผู้ดูแลฐานข้อมูลได้ทันทีโดยไม่ต้องใช้รหัสผ่าน การกำหนดรหัสผ่านของผู้ดูแลฐานข้อมูลทำได้โดยใช้คำสั่ง # ./mysqladmin -u root -h [hostname] -p password 'password ที่ต้องการ' (คำสั่ง mysqladmin อยู่ในไดเรกทอรี /path_to_mysql/bin/)

หลังจากนั้นเมื่อผู้ดูแลฐานข้อมูลเข้าใช้งานฐานข้อมูล จะได้รับข้อความให้ใส่ค่ารหัสผ่านทุกครั้งที่ใช้งานใดๆ เช่น หากผู้ดูแลระบบใช้งานฐานข้อมูลผ่านโปรแกรม mysql จะต้องสั่ง # ./mysql -u root -p และใส่ค่ารหัสผ่าน มิฉะนั้นจะได้รับข้อความเตือนว่า ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) และไม่อนุญาตให้เข้าใช้งาน

ระบบและวิธีการตรวจสอบสิทธิ์ของโปรแกรม MySQL

เนื่องจากโปรแกรม MySQL ให้ความสำคัญกับการจัดการเกี่ยวกับสิทธิ์ของผู้ใช้ค่อนข้างมาก ผู้ดูแลระบบและ/หรือผู้ดูแลฐานข้อมูลจึงควรมีความเข้าใจเกี่ยวกับระบบการทำงานดังกล่าว ซึ่งได้นำมาอธิบายไว้ในหัวข้อนี้ ประโยชน์ของระบบการตรวจสอบสิทธิ์ของโปรแกรม MySQL คือการพิสูจน์ตัวตนผู้ใช้ที่ติดต่อขอใช้งานฐานข้อมูลว่ามาจากเครื่องปลายทางที่ได้รับอนุญาตหรือไม่ และการใช้งานฐานข้อมูลเป็นไปตามสิทธิ์ที่กำหนด เช่น SELECTINSERTUPDATE และ DELETE หรือไม่ มีจุดประสงค์เพื่อให้ผู้ดูแลระบบมั่นใจว่าผู้ใช้งานทุกคนดำเนินการใดๆ กับฐานข้อมูลตามที่ได้รับอนุญาตให้ทำเท่านั้น ซึ่งการที่ผู้ใช้งานแต่ละคนจะเข้าใช้งานฐานข้อมูลจะต้องแสดงตัวว่าติดต่อมาจากเครื่องคอมพิวเตอร์เครื่องใดและใช้ชื่อผู้ใช้คนใด

กระบวนการตรวจสอบสิทธิ์ของโปรแกรม MySQL ประกอบด้วยการตรวจสอบ 2 ขั้นตอนเพื่อควบคุมการเข้าถึง คือ

  1. เครื่องให้บริการจะตรวจสอบว่าผู้ใช้ได้รับอนุญาตให้ติดต่อกับฐานข้อมูลหรือไม่
  2. หากได้รับอนุญาต จะตรวจสอบต่อว่าแต่ละคำสั่งที่เรียกใช้งาน เช่น SELECT, INSERT, UPDATE และ DELETE กับออบเจ็กต์ที่ผู้ใช้ต้องการใช้งาน เช่น ฐานข้อมูล ตาราง แถวหรือคอลัมน์ เป็นต้น ตรงกับสิทธิ์ที่ผู้ใช้คนดังกล่าวได้รับอนุญาตให้ใช้งานหรือไม่

จะเห็นได้ว่า การใช้งานฐานข้อมูลจะต้องได้รับการตรวจสอบทั้งในระดับผู้ใช้และสิทธิ์การใช้งานของผู้ใช้แต่ละคน ซึ่งสิทธิ์เหล่านี้ถูกกำหนดโดยผู้ดูแลฐานข้อมูล ดังนั้น การที่ผู้ดูแลฐานข้อมูลจะเพิ่มรายชื่อผู้ใช้งานฐานข้อมูลแต่ละคน ผู้ดูแลฐานข้อมูลจำเป็นจะต้องกำหนดรายละเอียดเหล่านี้ให้ชัดเจน สามารถทำได้ 2 วิธี ดังนี้

  1. ใช้คำสั๋ง GRANT เพื่อกำหนดว่าจะอนุญาตให้ผู้ใช้งานชื่อใดจากเครื่องคอมพิวเตอร์เครื่องใด ติดต่อเข้ามาใช้งานออบเจ็กต์ใดๆ ในฐานข้อมูลได้บ้าง มีรูปแบบคำสั่งดังนี้
    GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
      ON {tbl_name | * | *.* | db_name.*}
      TO user_name [IDENTIFIED BY [PASSWORD] 'password']
        [, user_name [IDENTIFIED BY 'password'] ...]
      [REQUIRE
        [{SSL| X509}]
        [CIPHER cipher [AND]]
        [ISSUER issuer [AND]]
        [SUBJECT subject]]
     

    [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |

          MAX_UPDATES_PER_HOUR # |
          MAX_CONNECTIONS_PER_HOUR #]]

GRANT เป็นคำสั่งที่ใช้ในการกำหนดสิทธิ์ของผู้ใช้แต่ละคนที่จะเข้าใช้งานฐานข้อมูล โดยข้อมูลที่ผู้ขอใช้ต้องแสดงต่อฐานข้อมูลคือ ชื่อผู้ใช้และเครื่องปลายทางของ หลังจากที่เดมอน mysqld ตรวจสอบข้อมูลทั้งสองแล้วพบว่าผู้ใช้คนดังกล่าวได้รับสิทธิ์ให้ใช้งานฐานข้อมูล เดมอน mysqld จะเปิดให้ผู้ใช้ส่งคำสั่งต่างๆ มาทำการ SELECT, INSERT, DELETE หรือ UPDATE ข้อมูลในฐานข้อมูล ทุกครั้งที่เดมอน mysqld ได้รับคำสั่งใดๆ จากผู้ใช้ก็จะนำคำสั่งนั้นมาเปรียบเทียบกับข้อมูลสิทธิ์ที่ได้กำหนดไว้ว่าผู้ใช้คนดังกล่าว ได้รับสิทธิ์ในการใช้งานคำสั่งนั้นกับออบเจ็กต์นั้นหรือไม่ คำสั่ง GRANT จะเป็นตัวกำหนดว่า จะอนุญาตให้ผู้ใช้ (user_name) ใช้งานฟิลด์ใด (column_list) ของตาราง(tbl_name) หรือฐานข้อมูลใด (db_name) (อาจอ้างถึงโดยกำหนดเป็น * เพื่อแทนตารางทั้งหมด) ด้วยคำสั่งใดได้บ้าง (priv_type) ส่วนที่เหลือคือออปชันอื่นๆ ที่ผู้ดูแลสามารถปรับใช้งานได้ตามต้องการ

หากผู้ดูแลฐานข้อมูลต้องการยกเลิกการให้สิทธิ์ที่ได้กำหนดไปแล้วด้วยคำสั่ง GRANT สามารถทำได้โดยใช้คำสั่ง REVOKE มีรูปแบบคำสั่งดังนี้

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
  ON {tbl_name | * | *.* | db_name.*}
  FROM user_name [, user_name ...]

วิธีการนี้เป็นวิธีการที่นิยมใช้งานมากกว่าวิธีการที่สองซึ่งจะกล่าวถึงต่อไป เนื่องจากมีความชัดเจนและมีโอกาสเกิดข้อผิดพลาดได้น้อยกว่า ผู้ดูแลระบบและ/หรือผู้ดูแลจึงควรทำความเข้าใจ และนำคำสั่งทั้ง GRANT และ REVOKE นี้ไปใช้งานเพื่อจัดการกับสิทธิ์ของผู้ใช้งานฐานข้อมูล รายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง GRANT และ REVOKE สามารถศึกษาได้จาก MySQL Manual | 4.3.1 GRANT and REVOKE Syntax (http://www.mysql.com/doc/G/R/GRANT.html)

  1. แก้ไขตาราง grant ของโปรแกรม MySQL โดยตรง ทำได้โดยการ INSERT ข้อมูลและสิทธิ์ของผู้ใช้คนใหม่ลงในตาราง user ซึ่งผู้ที่จะแก้ไขตารางนี้ได้คือผู้ดูแลฐานข้อมูล (root ของฐานข้อมูล) เท่านั้น อย่างไรก็ตาม วิธีดังกล่าวนี้มีความยุ่งยากซับซ้อน และต้องอาศัยความรอบคอบของผู้ดูแลฐานข้อมูล จึงไม่นำมาอธิบายในที่นี้ หากต้องการทราบวิธีการสามารถศึกษาได้ที่MySQL Manual | 4.3.5 Adding New Users to MySQL (http://www.mysql.com/doc/A/d/Adding_users.html)

ไฟล์ล็อกของโปรแกรม mysql

โปรแกรม MySQL มีไฟล์ล็อกที่ใช้เก็บบันทึกเหตุการณ์ที่เกิดอยู่หลายไฟล์ ผู้ดูแลระบบและ/หรือผู้ดูแลฐานข้อมูลควรจะมีความเข้าใจเกี่ยวกับไฟล์เหล่านั้น ว่าไฟล์ใดใช้เก็บค่าล็อกที่มีสาเหตุจากอะไร โดยไฟล์ทั้งหมดถูกเก็บไว้ในไดเรกทอรีที่เก็บไฟล์ฐานข้อมูล เช่น /path_to_mysql/var เป็นต้น 
ไฟล์ล็อกดังกล่าวประกอบด้วย

  • ไฟล์ล็อกของ error เก็บบันทึกปัญหาที่เกิดขึ้นขณะเริ่มทำงาน ขณะใช้งาน หรือการหยุดทำงานของเดมอน mysqld
    เดมอน mysqld จะบันทึกข้อผิดพลาดทั้งหมดที่เกิดไว้ และให้สคริปต์ safe_mysqld ทำหน้าที่ส่งต่อข้อความไปยังไฟล์ชื่อ 'hostname'.err
  • ไฟล์ล็อกของ isam เก็บบันทึกการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับตาราง ISAM ใช้ประโยชน์ในการดีบักโค้ดของ isam
  • ไฟล์ล็อกของการ query เก็บบันทึกการสร้างการติดต่อและการเรียกใช้ข้อมูล
    ใช้ในกรณีที่ผู้ดูแลระบบต้องการทราบว่ามีการทำงานใดเกิดอะไรขึ้นกับเดมอน mysqld บ้าง ผู้ดูแลระบบต้องเพิ่มออปชัน --log[=file] ในการสั่งให้โปรแกรม MySQL เริ่มทำงาน โดยค่าดีฟอลต์คือไฟล์ 'hostname'.log ข้อมูลที่บันทึกในไฟล์ดังกล่าวประกอบด้วยการติดต่อทั้งหมดและการเรียกใช้ข้อมูลในฐานข้อมูล เหมาะสำหรับการใช้เพื่อตรวจสอบแหล่งที่มาของข้อมูลที่ผิดพลาดว่ามาจากที่ใดหรือผู้ใช้คนใด
  • ไฟล์ล็อกของการ update เก็บบันทึกคำสั่งทั้งหมดที่ถูกใช้งานในส่วนเกี่ยวข้องกับการแก้ไขข้อมูลในฐานข้อมูล
    หากผู้ดูแลระบบสั่งให้โปรแกรม MySQL เริ่มทำงานโดยเพิ่มออปชัน --log-update[=file_name] จะทำให้เดมอน mysqld เก็บบันทึกคำสั่งภาษา SQL ทั้งหมดที่ถูกเรียกใช้งานในการอัพเดตข้อมูล ค่าดีฟอลต์ของไฟล์ที่เก็บล็อกคือ 'hostname'.###
  • ไฟล์ล็อกของ binary เก็บบันทึกคำสั่งทั้งหมดที่ถูกใช้งานที่เกี่ยวข้องกับการเปลี่ยนแปลงแก้ไขค่าใดๆ ใช้ประโยชน์ในการจำลองเหตุการณ์ทั้งหมดที่เกิดขึ้น
    ไฟล์ ล็อกชนิดนี้จะเก็บข้อมูลทั้งหมดที่เก็บในไฟล์ล็อกของการ update ที่กล่าวถึงก่อนหน้านี้ในรูปแบบที่มีประสิทธิภาพมากกว่า เช่น มีการบันทึกค่าระยะเวลาในการเรียกใช้ข้อมูลในการอัพเดตฐานข้อมูลด้วย จึงขอแนะนำให้ผู้ดูแลระบบเลือกใช้ไฟล์ล็อกแบบนี้แทนไฟล์ล็อกของการ update ทำได้โดยการเพิ่มออปชัน --log-bin[=file_name] ในการสั่งให้โปรแกรม MySQL เริ่มทำงาน ค่าดีฟอลต์ของไฟล์ที่เก็บล็อกชนิดนี้คือ 'hostname'-bin
  • ไฟล์ล็อกของ slow เก็บบันทึกการเรียกใช้ข้อมูลที่ใช้เวลาในการเรียกใช้มากกว่าค่าที่กำหนดในตัวแปร long_query_time
    การเพิ่มออปชัน --low-slow-queries[=file_name] ในขณะที่สั่งให้โปรแกรม MySQL เริ่มทำงานเป็นการกำหนดให้มีการบันทึกล็อกชนิดนี้ ค่าดีฟอลต์ของไฟล์ที่เก็บล็อกคือ'hostname'-slow.log

การจัดการกับไฟล์ล็อกของโปรแกรม MySQL มีวิธีการคล้ายคลึงกับไฟล์ล็อกอื่นๆ ผู้ดูแลระบบจะต้องคอยตรวจสอบขนาดของไฟล์ที่เกิดขึ้น และหมุนวนไฟล์ที่ใช้เก็บล็อก สำหรับระบบปฏิบัติการ Red Hat Linux หากผู้ดูแลระบบติดตั้งโปรแกรม MySQL โดยใช้แพ็คเกจชนิด RPM จะทำให้สามารถใช้งานสคริปต์ชื่อ mysql-log-rotate ในการหมุนวนไฟล์ล็อก

การจัดการเกี่ยวกับเจ้าของไฟล์ที่เกี่ยวข้องกับโปรแกรม MySQL ในระบบปฏิบัติการ

สิ่งสำคัญอีกประการหนึ่งเกี่ยวกับการสร้างความปลอดภัยให้กับโปรแกรม MySQL คือการแก้ไขชื่อเจ้าของไฟล์และไดเรกทอรีที่เกี่ยวข้องกับโปรแกรม MySQL ซึ่งตามปกติแล้ว ไฟล์และไดเรกทอรีทั้งหมดจะถูกเก็บไว้ในไดเรกทอรี /path_to_mysql/ ตามที่ผู้ดูแลระบบหรือโปรแกรม MySQL กำหนดในขณะติดตั้ง ประกอบด้วยไดเรกทอรีย่อยที่สำคัญดังต่อไปนี้

  • คือไดเรกทอรีที่ติดตั้งโปรแกรม MySQL ทั้งหมด เช่น /usr/local/mysql ทั้งหมด
  • bin (/path_to_mysql/bin) คือไดเรกทอรีเก็บไฟล์คำสั่งที่เกี่ยวข้องกับโปรแกรม MySQL เช่น mysql, mysqlaccess และ safe_mysqld เป็นต้น
  • var (/path_to_mysql/var) คือไดเรกทอรีเก็บไฟล์ของฐานข้อมูลของโปรแกรม MySQL ทั้งหมด และไฟล์ล็อกของโปรแกรม MySQL

ผู้ดูแลระบบควรปรับแก้ชื่อเจ้าของไฟล์และไดเรกทอรีที่เกี่ยวข้อง รวมถึงสิทธิ์การเข้าใช้งานโปรแกรม MySQL ดังนี้

  • /usr/local/
  drwxr-xr-x 12 root mysql 4096 Jul 20 17:48 mysql/
  • /usr/local/mysql/
  drwxr-x--- 2 root mysql 4096 Jul 19 14:43 bin/
  drwx------ 4 mysql mysql 4096 Jul 20 18:32 var/

จะเห็นได้ว่าไดเรกทอรีที่เก็บไฟล์ของฐานข้อมูล MySQL ถูกกำหนดให้เป็นของผู้ใช้ในระบบชื่อ mysql และจำกัดสิทธิ์การใช้งานให้เฉพาะผู้ใช้ชื่อ mysql เท่านั้นจึงจะเข้าถึงไฟล์ได้ เพื่อให้ผู้ใช้คนอื่นไม่สามารถดำเนินการใดๆ กับไฟล์เหล่านั้นได้ ยกเว้นผู้ใช้ชื่อ mysql ซึ่งเป็นเจ้าของเดมอน mysqld เท่านั้น

ข้อควรระวังที่เกี่ยวข้องกับความปลอดภัยของโปรแกรม MySQL

การใช้งานโปรแกรม MySQL ให้มีความปลอดภัยนั้น ผู้ดูแลจะต้องพิจารณาถึงวิธีการที่ผู้ใช้หรือผู้อื่นๆ จะเข้าถึงข้อมูลต่างๆ ในฐานข้อมูล และจำกัดสิทธิ์การใช้งานของผู้ที่จะเข้าใช้งานให้ได้รับสิทธิ์ให้น้อยที่สุดเท่าที่จะเป็นไปได้เท่าที่จำเป็นต่อการใช้งานเท่านั้น มีข้อควรระวังดังต่อไปนี้

  • นอกจากผู้ดูแลฐานข้อมูล (root ของโปรแกรม MySQL) ไม่ควรให้ผู้ใช้งานคนอื่นๆ เข้าถึงตาราง user ของฐานข้อมูล ซึ่งเป็นตารางที่เก็บรายชื่อผู้ใช้และรหัสผ่านที่จะเข้าใช้งานฐานข้อมูล เนื่องจากผู้ที่เข้าถึงตารางดังกล่าวนี้ในฐานข้อมูลได้จะสามารถอ่านข้อมูลรายชื่อผู้เข้าใช้งานและรหัสผ่านทั้งหมดได้ทันที โดยไม่จำเป็นต้องถอดรหัส ทั้งนี้ ถึงแม้ว่าไฟล์ของฐานข้อมูลดังกล่าวถูกเก็บในรูปแบบที่ได้รับการเข้ารหัสก็ตาม
  • ผู้ดูแลฐานข้อมูลควรศึกษาถึงระบบการให้สิทธิ์การเข้าถึงฐานข้อมูลโดยละเอียด โดยเฉพาะอย่างยิ่งวิธีการใช้งานคำสั่ง GRANT และ REVOKE ในการให้สิทธิ์และเพิกถอนสิทธิ์ของผู้ใช้ และไม่ควรให้สิทธิ์แก่ผู้ใช้เกินกว่าความจำเป็น ควรทดสอบว่า
    • สามารถใช้งานโดยให้สิทธิ์ของผู้ดูแลฐานข้อมูลโดยไม่ต้องใส่รหัสผ่านได้หรือไม่ โดยสั่ง # ./mysql -u root ถ้าไม่ได้จะต้องปรากฏข้อความตามที่ได้แสดงไว้ในหัวข้อด้านบน
    • ตรวจสอบการให้สิทธิ์โดยใช้คำสั่ง SHOW GRANTS (mysql> SHOW GRANT FOR user@host) ว่าการให้สิทธิ์เป็นไปตามที่ต้องการหรือไม่
  • รหัสผ่านที่ใช้งานจะต้องเป็นรหัสผ่านที่ดี และการเก็บค่ารหัสผ่านจะต้องได้รับการเข้ารหัส
  • หากอนุญาตให้ผู้ใช้ภายนอกเข้าใช้งานฐานข้อมูลได้ เช่น การใช้งานผ่านเว็บ ซึ่งอนุญาตให้ผู้ใช้ป้อนข้อมูลลงในฐานข้อมูล ผู้ดูแลระบบจะต้องตรวจสอบโปรแกรมที่ใช้เข้าถึงฐานข้อมูลอย่างละเอียด การใช้งานค่าตัวแปรใดๆ กับฐานข้อมูลควรได้รับการกำหนดค่าอย่างชัดเจนเพื่อป้องกันการโจมตี เช่น ใช้คำสั่ง mysql> SELECT * FROM table WHERE ID='234' ดีกว่า mysql> SELECT * FROM table WHERE ID=234 และต้องทดสอบการใช้งานในกรณีดังต่อไปนี้
    • ในกรณีที่ใช้งานผ่านแอพลิเคชันของเว็บ
      • ทดลองใส่ค่า ` ' ' และ ` " ' เพื่อทดสอบหาความผิดพลาดที่อาจเกิดขึ้น
      • ทดลองแก้ไขค่า URL ที่ใช้งาน โดยใส่ค่า %22 (` " '), %23 (` # ') และ %27 (` ' ')
      • ทดลองแก้ไขค่า URL โดยการป้อนค่าตามข้อก่อนหน้านี้แต่ใช้ค่าอักขระแทนตัวเลข
      • ทดลองใส่ค่าอักขระ ช่องว่าง หรือสัญลักษณ์พิเศษแทนการใส่ค่าตัวเลขในช่องที่กำหนดให้ใส่เฉพาะตัวเลข ซึ่งแอพลิเคชันดังกล่าวจะต้องไม่ส่งค่าเข้าไปยังฐานข้อมูล เพื่อความปลอดภัยของฐานข้อมูล
      • ตรวจสอบขนาดของข้อมูลก่อนที่จะส่งไปยังฐานข้อมูล เพื่อหลีกเลี่ยงการถูกโจมตีโดยวิธี Denial of Service (DoS)
      • กำหนดชื่อผู้ใช้ฐานข้อมูลที่ใช้งานผ่านแอพลิเคชันให้แตกต่างจากผู้ใช้ที่จะจัดการฐานข้อมูล และกำหนดให้ได้รับสิทธิ์เท่าที่จำเป็นเท่านั้น
    • ในกรณีที่ใช้งานผ่าน PHP
      • ยกเลิกการใช้งานฟังก์ชัน addslashes ( ) และ mysql_escape_string ( )
  • ถ้ามีการส่งข้อมูลผ่านอินเทอร์เน็ต ข้อมูลที่ส่งจะต้องได้รับการเข้ารหัสทุกครั้ง โดยอาจนำโพรโตคอล SSL หรือ SSH มาใช้งาน
  • ตรวจสอบการส่งข้อมูลโดยใช้คำสั่ง tcpdump และ strings ของระบบปฏิบัติการ เพื่อตรวจสอบว่ามีการส่งข้อมูลที่ไม่ได้รับการเข้ารหัสหรือไม่ โดยสั่ง # tcpdump -l -i eth0 src/dst port 3306 | strings
  • ต้องกำหนดให้ผู้ใช้งานฐานข้อมูลทุกคนมีรหัสผ่านในการเข้าใช้งาน ซึ่งผู้ดูแลระบบสามารถกำหนดได้ 2 วิธีคือ
    • แก้ไขค่าตัวแปร Password ในไฟล์สคริปต์ mysql_install_db
    • สั่งอัพเดตค่ารหัสผ่านของผู้ใช้ในฐานข้อมูล โดยใช้คำสั่ง
      mysql> UPDATE user SET Password=('new_password') WHERE user='root'
      mysql> FLUSH PRIVILEGES
  • เดมอน mysqld จะต้องไม่ทำงานโดยสิทธิ์ของผู้ดูแลระบบ เพื่อให้ไฟล์ของฐานข้อมูลที่จะถูกสร้างขึ้นภายหลังไม่เป็นของเป็นผู้ดูแลระบบ มิฉะนั้นผู้ใช้งานฐานข้อมูลอาจใช้ความสามารถในการสร้างไฟล์และเปลี่ยนให้ตนเองได้รับสิทธิ์เป็นผู้ดูแลระบบเพื่อบุกรุกระบบได้
    วิธีการกำหนดเดมอน mysqld ทำงานโดยใช้สิทธิ์ของผู้ใช้งานระบบคนอื่นทำได้โดยการแก้ไขไฟล์ etc/my.cnf โดยเพิ่มบรรทัด user=mysql ลงในส่วน [mysqld] หรือสั่งให้โปรแกรม MySQL เริ่มต้นการทำงาน โดยใช้ออปชัน --user=mysql ตามที่ได้อธิบายไว้ก่อนหน้านี้
  • ตรวจสอบว่าชื่อผู้ใช้ที่เป็นเจ้าของเดมอน mysqld ได้รับสิทธิ์ในการเขียนและอ่านไฟล์ในไดเรกทอรีที่เป็นไฟล์ฐานข้อมูลเท่านั้น


องค์ความรู้ที่มีผู้อ่านมากสุด
ขั้นตอน 8 ขั้นสำหรับการเริ่มต้นทำธุรกิจที่บ้าน
ต่อ ไปนี้ คือ ขั้นตอน 8 ขั้นที่ได้รับการพิสูจน์รับรองแล้วว่าจะเป็นประโยชน์มากสำหรับการเริ่มต้นทำ ธุรกิจของคุณและดำเนินธุรกิจจนถึงบรรลุความสำเร็จ

โดย... ศิริวรรณ ติรเลิศ

บริหารงานองค์กรอย่างมืออาชีพด้วยระบบซอฟท์แวร์ ERP
ERP คืออะไร และทำไมจึงมีความจำเป็นและสำคัญสำหรับองค์กรที่จะต้องมีการใช้ระบบ ERP

โดย... ศิริวรรณ ติรเลิศ

Perpetual Inventory Method vs. Periodic Inventory Method
There are differences between using the perpetual inventory method and the period inventory method which people who are involved should know the difference.

โดย... ศิริวรรณ ติรเลิศ

ขนาดขององค์กรกับการเลือกใช้ ERP
4+1 Basic Cost Factors for ERP Implementation 1. Hardware & Infrastructure 2. Software 3. Implementation 4. Customization 5. Maintenance

โดย... ศิริวรรณ ติรเลิศ

เมื่อไฟร์วอลล์ไม่ใช่คำตอบสุดท้ายของ security
จุดประสงค์ของบทความนี้คือ ต้องการให้ผู้ดูแลระบบในองค์กรได้ตระหนักว่าไฟร์วอลล์ไม่ใช่ทางเลือกสำเร็จรูปของ computer network security เสมอไป และต้องการกระตุ้นให้ผู้ดูแลระบบได้นำวิธีการป้องกันอื่นๆ มาประยุกต์ใช้ในองค์กรของตนต่อไป

โดย... ศิริวรรณ ติรเลิศ

การรักษาลูกค้าอย่างเดียวไม่เพียงพอ
การที่ลูกค้าจากเราไปยังมีปัญหาน้อยกว่า การที่ลูกค้าเปลี่ยนพฤติกรรมไปซื้อสินค้าของคู่แข่ง วิธีการใหม่ในการทำความเข้าใจลูกค้าและศึกษาถึงพฤติกรรมของลูกค้าแบบใหม่นี้ จะสามารถทำให้เราเข้าใจถึงพลังของอำนาจในการทำให้ลูกค้ามีความจงรักภักดีกับ ตราสินค้าเราได้

โดย... ศิริวรรณ ติรเลิศ

10 วิธีกู้วิกฤตธุรกิจ
Focus ทำเฉพาะสิ่งที่บริษัททำได้ดีที่สุด การทำธุรกิจหลายประเภทที่ไม่เอื้อประโยชน์ต่อกัน ก่อให้เกิดค่าใช้จ่ายที่สูง ในสภาวะปัจจุบันหลายธุรกิจมียอดขายลดลง กำไรน้อยหรือขาดทุนอยู่ นักธุรกิจจึงจำเป็นต้องลดขนาดของธุรกิจและเลือกทำเฉพาะธุรกิจที่บริษัททำได้ ดีที่สุด โดยพิจารณาถึงความถนัดความสามารถในการแข่งขัน และแนวโน้มของธุรกิจในอนาคตเป็นหลัก

โดย... ศิริวรรณ ติรเลิศ

ข้อมูลไม่ถูกต้อง ผลต่อการวางแผนสต๊อก
Inventory Management - Best Practices หัวใจธุรกิจ ชี้วัดกำไร ขาดทุน

โดย... ศิริวรรณ ติรเลิศ

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

โดย... ศิริวรรณ ติรเลิศ

วิธีการรักษาลูกค้าปัจจุบันให้อยู่กับเราตลอดไป
ธุรกิจทุกวันนี้กว่าจะ เติบโตมาได้ก็ทำเอาผู้บริหารเหงื่อตกกันไปตามกัน เรามารู้จักวิธีการรักษาลูกค้าให้อยู่กับเรา หลักการที่ทุกบริษัทพยายามทำกันคือ ขยายตลาดหาลูกค้าใหม่ให้ได้จำนวนมาก ๆ โดยไม่ได้คำนึงถึงวิธีการรักษาลูกค้าที่เราหามาได้แทบตายให้อยู่กับเรานาน ๆ วันนี้จึงมีเรื่องมาเล่าบอกกันถึงวิธีการที่จะรักษาให้คงอยู่กับเรานาน ๆ ค่ะ

โดย... ศิริวรรณ ติรเลิศ