|
|
|
@ -0,0 +1,26 @@
|
|
|
|
|
title: เก็บพาสเวิร์ดผู้ใช้เป็น text ธรรมดา |
|
|
|
|
date: Mar 9, 2015 |
|
|
|
|
author: sipp11 |
|
|
|
|
category: tech |
|
|
|
|
tags: security, failed |
|
|
|
|
icon: briefcase |
|
|
|
|
slug: sipa-or-th-store-password-in-plaintext |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ด้วยความที่อึ้งกับเพราะปกติไม่ค่อยได้เข้าไปใน [web SIPA - สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ](http://register.sipa.or.th/) เท่าไหร่ ก็เลยจำ password ไม่ได้ แต่พอเข้าได้กลับได้พบสิ่งที่น่าสะพรึงกลัว สำหรับองค์กร __ซอฟต์แวร์__ ของประเทศที่ไม่ควรจะทำอะไรให้มันขี้เกียจนัก |
|
|
|
|
|
|
|
|
|
ปัญหามันก็มีอยู่ที่ว่า พอ forget password แล้วนั่น mail ที่เค้าส่งกลับมาเป็นด้านล่างนี้! |
|
|
|
|
|
|
|
|
|
![Plaintext](/media/2015/03/sipa-forget-password.png) |
|
|
|
|
|
|
|
|
|
มันอาจจะดูไม่แปลกสำหรับบางคนนะครับ แต่การที่เค้าส่ง password เดิมเรากลับมาได้นั้น แปลว่า เค้าก็ต้องเก็บ password เราเป็นแบบนั้นด้วย? แสดงว่า ถ้าเกิด database server เค้าถูกโจมตี password ของเราก็จะถูกเอาไปใช้ง่ายๆ อย่างนั้นเลย |
|
|
|
|
|
|
|
|
|
## แล้วควรจะต้องทำอย่างไร? |
|
|
|
|
|
|
|
|
|
อย่างง่ายและประหยัดที่สุดคือ การเก็บ password เป็น hash digest ครับ เพราะการทำเป็น digest นั้นจะเป็น 1-way encryption ไม่สามารถย้อนกลับไปดูได้ว่า จริงๆ password ที่ผู้ใช้ใช้นั้นคืออะไรกันแน่ การตรวจสอบนั้นก็ไม่ยากเพราะเมื่อผู้ใช้ใส่ password เพื่อจะเข้าระบบก็ทำการหา hash ใหม่เพื่อเทียบกันกับที่เก็บไว้ในฐานข้อมูลเดิม |
|
|
|
|
|
|
|
|
|
การได้มาซึ่ง hash digest นั้นก็ไม่ได้มีวิธีเดียว ก็จะมีตั้งแต่บ้านๆ `md5` ที่ใช้กันเกลื่อนแต่ก็ยังดีกว่าไม่มีครับ สำหรับปัจจุบันนั้นอย่างน้อยก็ควรจะใช้ `sha-1` (Secure Hash Algorithm 1) |
|
|
|
|
|
|
|
|
|
สำหรับเวลา forget password ก็ควรจะสร้าง token จำกัดเวลาไว้เพื่อให้ผู้ใช้ที่เข้าถึง email นั้นได้จริงๆ เข้าไป reset password ได้ตัวเองตามเงื่อนไขต่างๆ เพราะสำหรับผู้ให้บริการแล้วนั้น ก็ไม่มีความจำเป็นที่จะรู้ password ของผู้ใช้ด้วยซ้ำไป |
|
|
|
|
|
|
|
|
|
ตอนนี้ก็ขอเศร้าซักพักครับ องค์กรของชาติเราบุคลากรไม่พอ? หรือไม่คิดจะทำให้ดี? |