แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด

วันศุกร์ที่ 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 ธรรมดาเลยครับ

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

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

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

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

วันพฤหัสบดีที่ 21 มีนาคม พ.ศ. 2556

ภาษาไทยกับการตัดข้อความให้สั้นลง (PHP,MySQL)

พอดีว่าต้องย่อข้อความให้สั้นลงเพื่อไม่ให้มันยาวมากเกินไป เพราะเนื้อหาจริงๆ มันจะยาวเกินไปหน่อย

ตอนแรกใช้การย่อข้อความลงด้วย PHP

$Content = substr($Content, 0, 100); 

แบบนี้มันก็ใช้งานได้ดี แต่มันมีปัญหากับภาษาไทย ซึ่งเข้าใจว่าน่าจะเป็นที่การเก็บข้อมูลเป็นแบบ UTF-8 ก็เลยตัดได้ไม่ลงตัวดีนัก มันก็จะโผล่เป็นตัวประหลาดๆ ออกมาบ้าง

วันนี้ก็เลยลองทำวิธีใหม่ที่เจอมาจากในนี้ http://net.tutsplus.com/tutorials/php/how-to-create-blog-excerpts-with-php/

คือเค้าใช้วิธีการดึงข้อมูลมาแค่ 100 ตัวอักษรเลย โดยใช้คำสั่ง LEFT() ใน MySQL ก็จะออกมาเป็นแบบนี้

SELECT content, LEFT(content,40) AS excerpt FROM `my_data`;

ซึ่งพอดึงข้อมูลออกมา มันก็จะเป็นแค่ 100 ตัวอักษรแถมภาษาไทยก็ไม่เละอีกด้วย แจ่มมากๆ :D

วันอังคารที่ 4 ตุลาคม พ.ศ. 2554

แก้การส่งอีเมลไม่ออกใน WP e-commerce

ช่วงนี้ทำเว็บขายของให้ลูกค้าอยู่ แล้วก็ใช้เจ้า WP e-commerce ที่จำเป็นต้องใช้ เพราะว่า plugin ตัวอื่นๆ ที่ทำ Shopping cart มันใช้กับ Windows Host ไม่ได้ซะนี่ เลยจำเป็นต้องใช้เจ้านี่ไป

แล้วปัญหาที่เจอขั้นแรกก็คือว่า Host ที่ลูกค้าใช้มันส่งเมลผ่าน php mail ไม่ได้ เลยไปหา plugin ที่ช่วยให้ Wordpress ส่งอีเมลผ่าน SMTP ได้ (WP-Mail-SMTP)

แต่ปัญหาก็ยังไม่จบ เพราะ WP e-commerce มันส่งอีเมลไปบอก Tracking number ให้ลูกค้าไม่ได้ ก็งมหาอยู่นานเลยว่ามันอยู่ที่ไฟล์ไหน จนมาเจอว่ามันอยู่ที่ /plugins/wp-e-commerce/wpsc-admin/ajax-and-init.php ในบรรทัดที่ 48

ของเดิมจะเป็นแบบนี้
wp_mail( $email, $subject, $message);
 
ผมลองทดสอบดูแล้วมันส่งไม่ไปถ้ายังใช้ $subject ก็เลยเปลี่ยนไปเป็นแบบนี้ครับ
wp_mail( $email, "Tracking Number from ....", $message);

แล้วมันก็ส่งออกไปละครับ

แต่ตอนนี้ยังมีปัญหาที่มันยังส่ง Slip ไปให้ลูกค้าไม่ได้ -*-