วันศุกร์ที่ 6 เมษายน พ.ศ. 2561

ค้นหาว่าเว็บโดน Hack ได้ยังไง ผ่าน Log file

ช่วงที่ผ่านมาเจอปัญหาการ Hack เว็บที่ตัวเองทำอยู่ แบบว่าป้องกันยังไงก็แล้ว ก็ยังโดนเจาะเข้ามาเขียนไฟล์ index ได้อยู่ดี

จนเมื่อวานลองเข้าไปเปิดดู Log file บน server ก็เลยเจอต้นเหตุ

กรณีที่ผมเจอคือ Hacker ใช้ช่องโหว่ในการอัปโหลดไฟล์ ทำการอัปโหลดไฟล์ .php เข้ามา แล้วก็ดัน execute ได้ซะด้วย ทำให้สามารถเข้ามาแก้ไขไฟล์ต่างๆ ในหน้าเว็บได้

ผมไล่ดูตั้งแต่อาทิตย์ก่อนที่รู้ว่าจะโดน hack เลยเห็นว่ามีการส่ง POST เข้ามาที่ไฟล์ๆ นึง จากนั้น IP เดียวกันนี้ก็เรียกใช้ไฟล์ที่เป็น .php ที่ไม่น่าจะอยู่ตรงนั้น แล้วก็มีการส่งค่าต่างๆ เข้ามาที่ไฟล์นี้หลายๆ ครั้ง จนผมมั่นใจว่าใช่แน่นอน ก็เลยทำการปิดการ execute ของ PHP ที่ directory อันนี้ไป

ตอนนี้ก็เหมือนจะหยุดการ hack ลงได้ละ แต่ก็ยังต้องตามดูกันต่อไปครับ แต่ทางที่ดีที่สุดคือ update software ทั้งหลายที่อยู่ในระบบซะ

วันพฤหัสบดีที่ 5 เมษายน พ.ศ. 2561

ใช้ .htaccess ป้องกันไม่ให้ PHP ทำงานในบาง directory

เจอ hack เว็บไซต์มาครับ หาวิธีป้องกันหลายแบบมาก แต่ก็ยังโดนเข้ามาวางไฟล์ได้อยู่ดี

วิธีการแก้ไขล่าสุดเลยหาวิธีป้องกันไม่ให้ไฟล์ PHP ทำงานได้ เพราะเดาว่ามี script ในการอัปโหลดไฟล์ ที่ยอมให้อัปโหลดไฟล์ PHP แล้วก็ทำให้มันทำงานได้ด้วย

วิธีแก้คือ
สร้างไฟล์ .htaccess ขึ้นมา
แล้วก็เอา code แบบนี้ไปใส่ไว้ครับ

php_flag engine off

มันจะทำให้ไฟล์ PHP ที่อยู่ใน directory เดียวกับไฟล์ .htaccess ตัวนี้ มันจะแสดงเป็นเหมือน text file ธรรมดาเลยครับ

วันพฤหัสบดีที่ 8 กุมภาพันธ์ พ.ศ. 2561

วิธีแก้ iOS Safari Javascript New Date แล้วมีค่าเป็น NaN

วันนี้เจอปัญหาที่แปลกประหลาดของ iOS Safari ที่ไม่สามารถ new Date() ออกมาได้ มันกลายเป็นค่า NaN (Not a number) ซะอย่างงั้น

ลองค้นดูก็เจอว่ามันเป็นเฉพาะ iOS Safari จริงๆ เจอวิธีแก้อยู่หลายอัน บางคนก็บอกให้ไปใช้ DateJS ช่วยเอาเลย แต่มันก็ดูยุ่งยากไปหน่อย

เลยลองหาดูมีวิธีแก้ง่ายๆ อยู่เหมือนกัน จากเว็บนี้
https://coderwall.com/p/gvwb9g/fix-invalid-date-on-safari-ie

//  Safari & IE browsers do not support the date format “yyyy-mm-dd”
const fixDateForAllBrowsers = dateString => dateString.replace(/-/g, '/');
ก็เออแก้ได้จริงๆ ด้วยนะ คือเจ้า iOS Safari มันไม่ยอมให้เราใช้การ New Date เป็น YYYY-MM-DD เท่านั้นแหละ ถ้าเปลี่ยนเป็น YYYY/MM/DD มันก็จะใช้ได้ละ

วันศุกร์ที่ 27 ตุลาคม พ.ศ. 2560

PHP เช็คว่าตอนนี้ก่อนหรือหลังวันที่ตั้งไว้

มีต้องขึ้น Popup ให้ลูกค้าในช่วงเวลานึง เลยลองหา solution ที่จะมาช่วยเช็คว่ามันควรจะแสดงหรือเปล่า ก็เลยไปเจอ code PHP ที่ช่วยเช็คเรื่องเวลาให้

if( strtotime("2017-10-26") > strtotime('now') ) {
   // ถ้าตอนนี้เกินวันที่ 26 ตุลาคม 2560 แล้วให้ทำ
  doSomething();
}

วันพฤหัสบดีที่ 12 ตุลาคม พ.ศ. 2560

เปลี่ยนชื่อ domain ใน Plesk ได้ง่ายๆ อย่างงี้เลย

วันนี้มีเหตุการณ์ที่ลูกค้าจะต้องเปลี่ยน domain จากของเดิมมาเป็นอีกอัน ทีแรกคิดว่าคงต้องใช้วิธีสร้าง domain ขึ้นมาอีกอันแล้วก็ชี้มาที่อันเก่า แต่พอค้นดูใน google ก็เลยเจอว่ามันมีวิธีง่ายๆ เลย
http://www.3essentials.com/how-to-rename-a-domain-in-plesk-12/

แค่เข้าไปแก้ชื่อ domain ของเดิมซะ แล้วก็ชี้ domain อันใหม่มาที่เดิมให้เรียบร้อย พอ DNS อัปเดต ทุกอย่างก็เรียบร้อย เข้าเว็บเดิมได้ด้วย domain อันใหม่เลย!

แต่ก็อย่าลืมชี้ domain อันเก่ามาที่ domain อันใหม่ด้วยนะ

วันจันทร์ที่ 17 กรกฎาคม พ.ศ. 2560

แปลบาง field ของ ACF ด้วย qTranslate

มีปัญหาที่ต้องหาทางแก้ไข คือมีงานนึงที่เราจำเป็นต้องเพิ่ม field หนึ่งอันด้วย ACF (Advanced Custom Fields) แต่ถ้าเราเพิ่มลงไปเฉยๆ เว็บที่เราใช้ qTranslate ในการแปลเนื้อหาของเว็บมันจะไม่สามารถแปล field พวกนี้ได้

เคยเจอ plugin ที่ช่วยให้ใช้ ACF + qTranlate อยู่เหมือนกัน แต่เราไม่อยากใช้ เพราะต้องการแปลแค่ field อันเดียวเท่านั้น

จนไปเจอเข้ากับเว็บนี้ http://www.zighead.com/2016/08/advanced-custom-fields-qtranslate-x/ ที่มาบอกว่ามันมีวิธีที่ทำให้เราสามารถแปล field ของ ACF ด้วยรูปแบบของ qTranlate ได้ด้วยนะ ก็เลยลองทำตามดูเลย แล้วก็พบว่ามันเวิร์คจริง!

สุดยอดไปเลย นอนตาหลับละวันนี้ :D

วันศุกร์ที่ 2 มิถุนายน พ.ศ. 2560

ลดขนาดไฟล์ PDF ด้วย Preview ใน Mac

มีเหตุให้ต้องลดขนาดไฟล์ PDF ที่ขนาดที่ Save จาก Illustrator ได้มา 3.1MB ซึ่งในไฟล์ก็ดูไม่ได้มีอะไรใหญ่ ยกเว้นรูปรูปนึง

เลยไปหาวิธีว่าจะใช้โปรแกรมไหนได้บ้างที่จะช่วยลดขนาดไฟล์ PDF ลงได้ ก็เลยเจอว่าเจ้า Preview ที่ใช้เปิด PDF บน Mac นี่แหละที่ทำได้

วิธีก็คือ

  1. เปิดไฟล์ PDF ขึ้นมาด้วย Preview
  2. เลือก Export 
  3. เลือกชนิดไฟล์เป็น PDF 
  4. จากนั้นเลือก Quartz Filter เป็น Reduce File Size
  5. ตั้งชื่อไฟล์แล้วก็กด Save ได้เลย
ขนาดไฟล์ที่ผมได้หลังจากใช้ Reduce File Size จาก 3.1MB เหลือแค่ 80KB เท่านั้นเองครับ ถ้าไฟล์ PDF ของใครรูปเยอะๆ อาจจะลดได้มากกว่านี้อีกครับ