การเข้ารหัสข้อมูลด้วย ORACLE DBMS_CRYPTO

              ข้อมูลที่ส่งผ่านในโลกอินเตอร์เน็ตอาจมีความจำเป็นต้องเข้ารหัสข้อมูลเพื่อความปลอดภัย แม้ว่าระบบการป้องกันจะดีแค่ไหน แต่การปล่อยข้อมูลในรูปแบบที่อ่านได้ (Plain Text) ให้วิ่งผ่านเน็ตเวิร์ค ดูเป็นสิ่งที่ไม่ปลอดภัยเป็นอย่างยิ่ง               ข้อมูลบนระบบจัดการฐานข้อมูล ORACLE มีฟังก์ชันสำหรับการเข้ารหัสข้อมูล (Encrypt) และถอดรหัสข้อมูล (Decrypt) สำหรับข้อความได้ในหลายๆ Algorithm ดังนี้ ENCRYPT_DES Data Encryption Standard. Block cipher. Uses key length of 56 bits. ENCRYPT_3DES_2KEY Data Encryption Standard. Block cipher. Operates on a block 3 times with 2 keys. Effective key length of 112 bits. ENCRYPT_3DES Data Encryption Standard. Block cipher. Operates on a block 3 times. ENCRYPT_AES128 Advanced Encryption Standard. Block cipher. Uses 128-bit key size. ENCRYPT_AES192 Advanced Encryption Standard. Block cipher. Uses 192-bit key size. ENCRYPT_AES256 Advanced Encryption Standard. Block cipher. Uses 256-bit key size. ENCRYPT_RC4 Stream cipher. Uses a secret, randomly generated key unique to each session. สำหรับตัวอย่างในวันนี้จะแสดงการเข้ารหัสข้อมูลด้วย Algorithm DES ซึ่งคีย์จะมีความยาว 56 bits เนื่องจากการเข้ารหัสและถอดรหัสจะใช้งานคู่กัน ดังนั้นเราสามารถเขียนทั้งสองฟังก์ชันไว้ใน Package ดังนี้ END;/ จากคำสั่งการสร้าง Package ข้างต้นเป็นการเข้ารหัสและถอดรหัสโดยใช้ Algorithm แบบ DES การเรียกใช้งานสามารถเรียกผ่านคำสั่งบน SQL Plus ได้ดังภาพ จากการทำงานจะพบว่าเราสามารถเข้ารหัสข้อมูลอย่างง่ายด้วย Algorithm DES ได้ หากต้องการใช้ Algorithm อื่น สามารถเปลี่ยนค่าได้จากที่กำหนดไว้ใน Package ได้ โดยต้องคำนึงถึงขนาดของคีย์ที่เข้ารหัสด้วย เช่น AES ต้องมีขนาดคีย์เป็น 128 bits, 256 bits เป็นต้น

Read More »

ETL ต้องตรวจสอบอะไรบ้างเพื่อความมั่นใจในโอน ย้ายข้อมูล

ETL (Extract, Transform, Load) ประโยชน์ที่สามารถนำไปประยุกต์ใช้ ============================ ETL Tools ตอนนี้มีอยู่หลายค่ายหลายโปรแกรม ทั้งฟรีและขาย สามารถนำมาประยุกร์ใช้งานได้ ตัวอย่างเช่น ========================== ต้องตรวจสอบอะไรบ้างเมื่อท่านต้องทำ ETL 1. Metadata Testing เป็นการทดสอบส่วนประกอบของข้อมูลพวกชนิดของข้อมูล ขนาดและเงื่อนไขต่างๆของข้อมูล2. Data Completeness Testing ความสมบูรณ์ของข้อมูลต้องสุ่มทดสอบข้อมูล เช่น คีย์ที่ใช้เชื่อมข้อมูลระหว่างตารางไม่ควรจะเป็น NULL 3. Data Quality Testing คุณภาพของข้อมูล เช่นข้อมูลชื่อประเทศเดียวกันต้องสะกดเหมือนกันทั้งหมด การหาข้อมูลซ้ำซ่อนแบบไม่ปกติ4. Data Transformation Testing ดักจับ error ระหว่างการถ่ายโอนข้อมูล5. ETL Regression Testing ทดสอบเมื่อมีการเปลี่ยนแปลงกระบวนการในการทำ ETL6. Reference Data Testing การทดสอบกับข้อมูลที่เป็นสากลทั่วไปใช้กัน เช่น ชื่อ ตำบล อำเภอ จังหวัด ควรต้องตรงกันกับข้อมูลของราชการเท่านั้น7. Incremental ETL Testing เป็นการทดสอบโดยการค่อยๆเพิ่มกระบวนการถ่ายโอนข้อมูลเป็นขั้นๆเพื่อหาปัญหาของการถ่ายโอน8. ETL Integration Testing เป็นการทดสอบภาพรวมของการทำงานรวมกันของ module เงื่อนไขต่างๆในการถ่ายโอนข้อมูล9. ETL Performance Testing เป็นการประเมินเรื่องเวลาและปริมาณข้อมูลเพื่อจะได้ทราบถึงระยะเวลาการทำงานที่ควรจะเกิดขึ้นกับข้อมูลปริมาณที่ต้องการ Metadata Testing สิ่งที่ต้องตรวจสอบ การตรวจสอบการเปลี่ยนแปลงของข้อมูลของการทำ ETL แต่ละรอบ 1.Track changes ตรวจสอบ metadata ตามเวลาที่กำหนด ทั้ง Source และ Target และส่วนของการพ้ฒนา 2.Compare table metadata ทั้ง Source และ Target และส่วนของการพ้ฒนา ชื่อของตารางและColumn  ขนาดของ Column 3.Compare column data types 4.ตรวจสอบ Look Up table ต่างๆว่าข้อมูล Update ให้เหมาะสมและครบถ้วนแล้วหรือไม่ Data Completeness Testing Data Quality tests ตรวจสอบคุณภาพของข้อมูล SELECT fst_name, lst_name, mid_name, date_of_birth, count(1) FROM Customer GROUP BY fst_name, lst_name, mid_name HAVING count(1)>1 ในส่วนหัวข้ออื่นๆจะเป็นส่วนการทดสอบที่ขึ้นอยู่กับเครื่องมือที่นำมาใช้งาน การทำงานจริงควรจะหาเครื่องมือที่มีประสิทธิภาพมาใช้งานเพราะจะช่วยประหยัดกำลังไปได้มาก แต่ผู้ดำเนินการควรจะรู้ว่าควรระวังหรือต้องตรวจสอบตรงส่วนไหนเพื่อให้งานออกมาอย่างมีประสิทธิภาพ

Read More »

Blazor Server Application : วิธีการแปลงรูปภาพ เป็น base64 สำหรับเก็บข้อมูล

แนะนำวิธีการแปลงรูปภาพ เป็น base64 เพื่อเก็บข้อมูล มีขั้นตอนดังนี้ 1) สร้าง Project ผ่าน Visual Studio 2019 เลือก Blazor Server App 2) เลือก Framework เป็น .NET 5.0 3) ติดตั้ง Add-on ชื่อ System.Drawing.Common ผ่านทาง NuGet 4) เปิดไฟล์ Index.razor จากนั้นเขียน Code ดังนี้ 5) หน้าจอแสดงปุ่ม “การแปลง (ไฟล์รูปภาพ เป็น Base64)” 6) ผลลัพธ์จากการแปลงไฟล์รูปภาพ เป็น Base64 หมายเหตุ: นามสกุลไฟล์รูปภาพ (picture.png) ต้องตรงกับ data:image/png;base64 สำหรับแสดงผล

Read More »

โหมดไม่ระบุตัวตน ?

สวัสดีท่านผู้อ่านทุกท่าน Blog ปิดท้ายของเดือนพฤษภาคม ปี 64 นี้ ผู้เขียนขอเล่าในเรื่องของความรู้เพิ่มเติมในการใช้ Browser ละกันเนอะ จากการใช้งานท่องเว็บของเราในแต่ละวัน คาดว่าผู้อ่านแต่ละท่าน คงจะคุ้นเคยกับคำว่า โหมดไม่ระบุตัวตนกันมาบ้างแล้ว จริงๆ ในแต่ละ Browser เนี่ย ชื่อเรียกมันก็จะต่างกันนะ เช่น Incognito , Private หรือ Inprivate เป็นต้น ซึ่งทั้งหมดทั้งมวลมันก็คือ โหมดไม่ระบุตัวตนนั่นแหละ โหมดไม่ระบุตัวตน คืออะไร ? เอาแบบภาษาบ้านๆ พูดง่ายๆ ก็คือ เป็น Feature นึงที่มีอยู่ในทุกๆ Browser โดยโหมดนี้ จะทำให้ Browser ของเราจะไม่จัดเก็บข้อมูลของเว็บที่เราเข้า ไม่มีที่อยู่ ไม่มี cookie ไม่มีข้อมูลที่เราป้อนก่อนหน้า ก็คือไม่มีอะไรเลย ! มันก็คงคล้ายๆ กับการทำให้ Browser ของเราความจำเสื่อมชั่วคราวนั่นแหละนะ คราวนี้มาขยายความแบบทางการกันหน่อย Browser จะไม่เก็บประวัติการเข้าใช้งานเว็บไซต์ Browser จะไม่เก็บ cookie ของเว็บไซต์ และ ข้อมูลที่กรอกในฟอร์มต่างๆ แต่ถ้ามีการ bookmarks หรือดาวน์โหลดไฟล์ระหว่างใช้งาน ข้อมูลเหล่านั้นก็จะยังคงอยู่ ถึงแม้จะเราจะปิดโหมดนี้ไปแล้ว ผู้ให้บริการอินเทอร์เน็ตยังคงเห็นการเข้าใช้งานของเราตามปกติ IP ที่เข้าใช้งานเว็บไซต์ ไม่ว่าจะโหมดปกติ หรือโหมดไม่ระบุตัวตน ยังเป็น IP เดียวกัน และโหมดไม่ระบุตัวตนมันไม่ได้ซ่อนที่อยู่ IP ของเราให้นะทุกคนนนน !! การใช้งานโหมดนี้ในเครื่องสาธารณะ หรือเครื่องที่มีความเสี่ยง โหมดนี้ไม่ได้ช่วยให้ความเสี่ยงเหล่านั้นลดน้อยลง พออ่านไปอ่านมาจนถึงตรงนี้ หลายๆ ท่านคงรู้สึก เอ๊ะ ! แล้วนี่มันเป็นการท่องเว็บแบบส่วนตัวจริงเหรอ ทำไมรู้สึกเหมือนๆ จะไม่ส่วนตัวยังไงยังงั้นกันใช่มั้ย … เอาจริงๆ ผู้เขียนมองว่า เราก็ต้องเข้าใจให้ถูกต้องกันก่อน ว่าโหมดไม่ระบุตัวตนตัวนี้เนี่ย เหมาะกับการใช้งานแบบไหน ขอบเขตการทำงานของมันเป็นยังไง แล้วมันเหมาะ หรือไม่เหมาะ กับการใช้งานแบบใดกันละ ? ถ้าตามความเข้าใจของผู้เขียน ผู้เขียนเข้าใจว่า เหมาะกับกรณีที่เราไปใช้งานตามร้าน Internet cafe หรือ เครื่องสาธารณะ ที่เราไม่ต้องการให้ Browser มีการเก็บประวัติการเข้าใช้งาน เหมาะกับกรณีที่เราต้องการเข้าใช้บริการต่างๆ พร้อมกันมากกว่า 1 account ข้อนี้ส่วนตัว แหะๆ ผู้เขียนคิดว่ามันเหมาะกับงานของผู้เขียน คือ ใช้สำหรับใช้ทดสอบระบบ หรือเว็บที่เราพัฒนา เนื่องจากจะไม่มีการจำ cache ใด ให้เราปวดหัว ^^ ไม่เหมาะกับกรณีที่เราไปใช้งานในทางที่ไม่ดี เพราะมันยังสามารถโดนติดตามได้อยู่ … อย่าลืมระวังข้อนี้ด้วยนะ !! หากสิ่งที่ท่านผู้อ่านต้องการ ที่ไม่ใช่แค่ไม่เก็บประวัติ ไม่เก็บ cookie เหล่านี้ ทางผู้เขียนขอแนะนำให้ไปศึกษาใช้การ VPN หรือ Proxy ควบคู่ไปกับการใช้โหมดไม่ระบุตัวตน สุดท้ายแล้ว เจ้าโหมดไม่ระบุตัวตนนี้ ก็ยังคงเป็นอีกตัวเลือกที่ง่าย และยังคงมีประสิทธิภาพในระดับหนึ่ง ทั้งนี้ก็ขึ้นอยู่กับลักษณะการใช้งาน และสภาพแวดล้อมของแต่ละคน ผู้เขียนหวังเป็นอย่างยิ่งว่า Blog นี้จะยังคงเพิ่มความเข้าใจ ให้ความกระจ่างกับผู้อ่านในเรื่องของ โหมดไม่ระบุตัวตน ได้ไม่มากก็น้อยแหละเนอะ ขอบคุณแหล่งข้อมูลข่าวสาร และความรู้ >>> https://www.techhub.in.th/

Read More »

วิธี Install Windows Service (ที่เขียนด้วย VS.Net) ตัวเดียวกันมากกว่า 1 ครั้ง

ปกติวิธี Install Windows Service ที่เขียนด้วย VS.Net เป็นดังนี้ InstallUtil.exe MyService.exe และคำสั่ง Uninstall Windows Service ที่เขียนด้วย VS.Net เป็นดังนี้ InstallUtil.exe /u MyService.exe อย่างเช่นมีไฟล์ Windows Service ชื่อ KillLoginSession โดยจะมีทั้ง file exe และ file config ไว้ใน folder C:\service1 ดังรูป เมื่อ run คำสั่งดังนี้ %WINDIR%\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe c:\service1\KillLoginSession.exe แล้วเปิด Services ของ Windows ขึ้นมา จะมี Service KillLoginSession ปรากฎดังรูป ซึ่ง Service ตัวนี้จะมี Properties ดังนี้ คือมี Service name = KillLoginSessionService และมี Display name = ALIST Kill Login Session Service ถ้าต้องการติดตั้ง Service KillLoginSession เพิ่ม เพราะบางครั้งต้องการใช้ Service เดิมแต่ปรับแก้ค่าที่ config file ก็ทำการ copy Service KillLoginSession ไปไว้เพิ่มใน folder C:\service2 ดังรูป แล้ว run คำสั่ง %WINDIR%\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe c:\service2\KillLoginSession.exe จะปรากฎ error ดังรูป คือมี service นี้ติดตั้งอยู่แล้ว วิธีแก้คือ ให้ใส่ code ดังนี้ sc create <servicename> binpath= “<pathtobinaryexecutable>” [option1] [option2] [optionN] <servicename> คือ ชื่อ service ที่กำหนดขึ้นมาโดยต้องไม่ตรงกับ service ที่ทำงานอยู่ <pathtobinaryexecutable> คือ ตำแหน่งที่ตั้งของ file service ที่จะทำการ Install [option] ไว้สำหรับใส่คำสั่งอย่างอื่นเพิ่ม เช่น Display Name จะมีหรือไม่มีก็ได้ ใส่ code ตามข้างบนได้ดังนี้ sc create KillLoginSessionTest binpath=”C:\service2\KillLoginSession.exe” DisplayName=”ALIST Kill Login Session Test” จะได้ผลดังรูป มี Properties ดังนี้ คือมี Service name กับ Display name ตามที่ได้กำหนดไว้ คำสั่งสำหรับ Uninstall ก็คือ sc delete <servicename> ถ้าต้องการ Uninstall Service ที่สร้างขึ้นก็ใส่ code ดังนี้ sc delete KillLoginSessionTest

Read More »