
[TOC]
ทำไมต้องรับมือ
- ป้องกันไว้ก่อนดีที่สุด
- ไม่ต้องเริ่มใหม่ทุกครั้งที่เกิดปัญหา
- ความน่าเชื่อถือก็มาจากเว็บไซต์ได้
- รู้ไว้เพื่อตรวจสอบ

ประเมินความเสียหายเมื่อถูกโจมตี
ถ้าเว็บไซต์เราถูกโจมตี
ผลกระทบที่เกิดขึ้นมีอะไรบ้าง
- เว็บไซต์ใช้งานไม่ได้ ถูก google ลดอันดับความน่าเชื่อถือ
เช่น กรณีเว็บไซต์ติด malware google chrome ขึ้นเตือนผู้ใช้งานว่าเว็บไซต์ อันตราย - เว็บไซต์โดนลบ ข้อมูลเว็บไซต์ในฐานข้อมูลโดนลบ
- ข้อมูลเว็บไซต์โดนสำเนาออกไป
- เว็บไซต์กลายเป็นแหล่งโฆษณาที่สร้างความรำคาญให้ผู้ใช้
- ถูกแอบอ้างใช้ email ส่งออกไปหาสมาชิก ทำให้ email จากโดเมนของเราเสียงต่อการเป็น spam
- ต้องเปลี่ยน hosting provider บ่อยๆ เนื่องจากสร้างปัญหาให้ user รายอื่นๆ
- เวลาที่เสียไปจากการหาปัญหา หาคนมาแก้ปัญหา
- ความเสียหายจากการใช้ทรัพยากร server โดยไม่รู้ตัว
- การให้ข้อมูลที่ผิดเช่น เลขที่บัญชีธนาคาร
รู้จักวิธีโจมตีหลากหลายรูปแบบ
การโจมตีเว็บไซต์มีทั้งง่ายๆแบบคาดไม่ถึงจนไปถึงการใช้ช่องโหว่ของระบบ
- การ email ขอรหัสผ่านเข้าเว็บไซต์
เช่น แอบอ้างว่าเป็นเจ้าหน้าที่ support มาจาก hosting provider แจ้งว่าเว็บไซต์มีปัญหาขอเข้าไปส่วนจัดการเพื่อตรวจสอบ - การสุ่มรหัสผ่าน
บางเว็บไซต์ใช้ Username: admin Password: เป็นคำง่ายๆเช่น 1234
ทำให้ง่ายต่อการเดา หรือโดยการใช้โปรแกรมพวก master password มาแสกน - โจมตีแบบสร้างความรำคาญ
ส่วนมากจะใช้ช่องทางที่เราเปิดไว้เอง เช่น webbord, แสดงความเห็น
มาโพสข้อความฌฆษณา หรือหน้าสมัครสมาชิกที่มักถูก bot เข้ามา
add ข้อมูลขยะ ทำให้เราต้องตามลบ - การโจมตีจากช่องโหว่ script
เช่นการอนุญาติให้ upload เอกสาร โดยไม่คัดกรอง file extension
แล้วผู้ใช้ upload ภาษา script เข้าไป แล้วแจ้งตำแหน่งไฟล์ให้ด้วย
ก็ง่ายที่จะนำเข้าไปรัน script นั้นโดยตรง - โจมตีเหมือนคนทำเอง เหมือนการควบคุมหน้าจอ
บางครั้งเราคิดว่าพอ login แล้วจะป้องกันการโจมตีได้ ฝั่งโจมตีก็มี tool ในการสมัครสมาชิก ยืนยัน email แล้ว post spam ได้ - โจมตีแบบ injection
คือลองใส่ logic หรือ script เข้ามาเพื่อให้เรารับ script มารันที่ server
หรือการใช้ sql injection เพื่อผ่านหน้า login - โจมตีให้ค้าง ใช้งานไม่ได้
สร้าง request หลอกๆให้เว็บคุณทำงานหนักขึ้น คนเข้าเว็บคุณแล้วรู้สึกช้า
แต่เว็บคู่แข่งคุณทำไมเร็วจัง - โจมตีด้วย cookie จาก browser
สมมุติเหตุการณ์เลวร้ายขนาดที่นักพัฒนาเก็บ id user ที่ login
ไว้ใน cookie ถ้าผู้ใช้แก้ไขค่านั้นก็จะกลายเป็นอีกคน login - ใจดีรวมไฟล์ไว้ให้ผู้ไม่หวังดีเลย
บางครั้งเราลืมว่าไฟล์อย่าง .zip สามารถ download ได้ ถ้าเราเผลอ
Zip folder admin ลงมาเพื่อแก้ไขแล้วไม่ลบทิ้ง เขาอาาจะลองเดาว่าน่าจะมี
ไฟล์ admin.zip ค้างอยู่ก็ได้ - เอาไฟล์มาฝากไว้ที่เรา
บางครั้งเราเปิดให้ uplaod ไฟล์ โดยลืมจำกัดขนาด หรือไม่ป้องกันการเข้าถึง
จากเว็บอื่น ทำให้เราเสียพื้นที่ในการเก็บข้อมูลได้ง่ายๆ
รู้จักวิธีการปัองกัน และเครื่องมือ
ป้องกัน spam แบบฟอร์มด้วย google recaptcha

Google ได้พัฒนาระบบป้องกัน spam แบบฟอร์มที่ให้เรานำไปใช้ได้ฟรี
มีหลาย version ตั้งแต่เลือกรูปภาพรถ ไปจนกึง ฉันไม่ใช่หุ่นยนต์
ล่าสุดคือ invisible captcha ที่ผู้ใช้ไม่ต้องทำอะไรเลยก็ปลอดภัยได้
ตรวจสอบไฟล์บน server บ้าง
เข้าไปดูไฟล์บน server บ้างว่ามีอะไรแปลกๆใหม ไฟล์นั้น download ได้ใหม
ถ้า download ได้แล้วอะไรอยู่ข้างใน เช่นไฟล์ zip
ดึงไฟล์บน server ลงมาเก็บไว้เป็นประจำ รวมถึงฐานข้อมูลด้วย
ดูพื้นที่บน server ว่า path ใหนใช้เนื้อที่เยอะ เยอะเพราะอะไร
ข้อมูลหรือไฟล์ขยะ
ดู request ด้วย google analytics

หมั่นตรวจสอบสถิติการเข้าชมเว็บไซต์อยู่เสมอ เพื่อดูว่ามีคนเข้าใช้งานปกติหรือไม่
มีการเข้าใช้งานแบบไม่ปกติใหม เช่น เรียกมาจากประเทศที่ไม่ใช่กลุ่มเป้าหมายของเรา
ถ้ามีความผิดปกติก็บล็อค กลุ่มประเทศได้จาก ip address และ .htaccess
และดูหน้าเพงใหนที่คนเข้าเยอะ หรือไม่เข้าเลย จะได้นำไปปรับปรุงเว็บไซต์
รู้ว่าเว็บเราทำอะไรได้บ้าง
อย่างเช่นมีให้ upload file ใหม แล้วใคร upload ได้บ้าง
มีการป้องกันเรื่องนามสกุลไฟล์ที่ถูกต้องหรือไม่
ลองทดสอบ upload ดูได้เลย
ใช้ subversion ตรวจสอบไฟล์

ปัจจุบันมีโปรแกรม version control ให้เลือกใช้มากมาย เช่น github
Subversion
ลองนำ tool เหล่านี้มาใช้ในการเปรียบเทียบ script ที่เรา backup ไว้ กับที่ run
อยู่บน server ว่ามีอะไรแตกต่างจากเดิม เป็น malware หรือไม่
ประโยชน์คือทำให้เห็นความแตกต่างของไฟล์ได้ง่าย ดีกว่าไปเดาว่าเกิดจาก
ความผิดพลาดตรงใหน
ติด SSL ให้เว็บไซต์
ป้องกันการดักข้อมูลระหว่าง bowser ผู้ใช้ กับ server ที่เราใช้งานได้
ทำให้โอกาสที่ข้อมูลสำคัญหลุดออกไป มีความเป็นไปได้น้องมาก
ปัจจุบัน google ก็ปล่อย chrome version ล่าสุดที่เน้นว่าทุกเว็บต้องมี ssl
โดยจะขึ้น un secure ให้กับเว็บไซต์ที่ยังไม่ติด ssl ที่ address bar
ใช้ระบบสมาชิกป้องกัน spam
อย่าเปิดให้ผู้ใช้ทั่วไปส่งข้อมูลมาที่เว็บไซต์ได้ง่ายเกินไป ควรมีระบบสมาชิก
เพื่อกรองผู้ใช้ได้ระดับหนึ่งในการส่งข้อมูลมา
เดี๋ยวนี้มี social login ให้ใช้มากมาย เช่น google, microsoft, twitter, facebook
ใช้ social login มาช่วยให้การสมัตรสมาชิก การลงชื่อเข้าใช้ทำได้ง่ายขึ้น
ไม่จำเป็นต้องระบุหรือเก็บรหัสผ่านผู้ใช้ไว้ ผู้ใช้ก็ไม่ต้องจำรหัสผ่านเพิ่ม
เลือก block สมาชิกที่ใช้งานไม่พึ่งประสงค์ ไม่ใช่ลบทิ้ง เพราะเดี๋ยวก็ใช้ข้อมล
เดิมมาสัมครสมาชิกได้อีก
Monitor ข้อมูลในฐานข้อมูลบ้าง
จัดทำ หรือหา tool มาคอย monitor ว่าเกิดอะไรขึ้นในเว็บไซต์บ้าง
เช่น
วันนี้ทำไมคนสมัครสมาชิกเข้ามาเยอะจัง ใช้คนจริงหรือเปล่า
มี comment อะไรใหม่บ้าง เป็น spam หรือเปล่า
ตั้งข้อสงสัยว่าทำไมข้อูลตารางนี้ เยอะผิดปกติ
เปลี่ยน path admin และตั้ง password ให้ยากขึ้น
ยกกรณี wordpress ที่ path admin จะเป็น wp-admin
ไฟล์ config ก็จะชื่อว่า config.php
ให้เปลี่ยนเป็น path หรือไฟล์อื่น เพื่อป้องกันโปรแกรมพวก automation ต่างๆ
ที่จะยิง malware มาใส่ โดยอาศัยโครงสร้างต้นแบบมาใช้
เปลี่ยน username password เป็นชื่ออื่นบ้างที่ไม่ใช่
Admin 1234
สำหรับข้อมูลสำคัญลองใช้ Google Authenticator

ด้วยระบบ login 2 ชั้นจะช่วยป้องกันการเข้าเป็น admin แบบเดิมที่ใช้แค่ user
Password ก็เข้าใช้งานได้แล้ว
เปลี่ยนมาเป็นต้องยืนยันด้วย google authenticator ด้วย
ลอง scan web ด้วย SQLMAP

ตรวจสอบความเสี่ยง
- ทำการ backup ไฟล์เป็นประจำหรือยัง
- มีชุด backup ที่สามารถย้อนไปยังข้อมูลที่ไม่เสียหาย น้อยที่สุดหรือยัง
- ตรวจสอบ sourcecode เป็นประจำว่ามีสิงแปลกปลองหรือไม่
- เข้าไปดูเว็บไซต์ของตัวเองทุกวัน
- ดูสถิติเว็บไซต์เพื่อหาข้อบ่งชี้ว่ามีความผิดปกติ
- ดูฐานข้อมูล หรือหา tool สำหรับหาความผิดปกติ
- มีระบบแจ้งเตือนความผิดปกติ
- ตรวจสอบไฟล์บน server หาข้อมูลขยะ หรือ zip file ที่ไม่จำเป็น
- ฟอร์มต่างๆมีการติดตั้ง recaptcha ป้องกัน spam หรือยัง
- การเปลี่ยน path file หรือทำ directory protection ทำหรือยัง
- รหัสผ่านสำหรับ admin เข้าระบบยากพอหรือยัง
- เปิดใช้การ login 2 ชั้นด้วย Google Authenticator หรือยัง
- ทดสอบการทำงานของเว็บไซต์ เช่นลอง upload file แปลกๆ
- เว็บเรามีการติดตั้ง SSL หรือยัง
- ลองหา tool มาเจาะเว็บไซต์อย่าง SQLMap มาทดสอบระบบดู
- การจำกัดสิทธิ์เข้าถึง resource ด้วย htaccess ได้ทำบ้างหรือยัง
- Update sourcecode อยู่เสมอ

