• June 3, 2017

    บางครั้ง hacker เลือกที่จะ hack ผ่านทางแฟ้ม image เพราะว่าแฟ้มนี้เว็บส่วนใหญ่ จะเปิดให้สามารถ upload ไฟล์ได้ ถือว่าเป็นจุดอ่อนที่สำคัญจุดหนึ่ง เเต่ปิดการรันสคริป ในแฟ้มนี้ ด้วย .htaccess ได้

    หลายเว็บ ตั้งค่า permission แฟ้มที่เก็บรูป ให้เป็น 777 ซึ่งเอาไว้รองรับการ upload และแน่นอน หาก hacker สามารถหาช่องโหว่เพื่อ upload script ขึ้นมาได้ นั่นก็หมายความว่า เค้าสามารถ upload อะไรก็ได้ขึ้นมาใส่ในแฟ้มนี้ (ไม่นับกรณีที่โดน php shell)

    เราควรปิดแฟ้มรูปภาพให้ไม่สามารถรันไฟล์ php ได้ เพื่อไม่ให้สามารถรันไฟล์ตามที่ต้องการได้

    # deny access to all .php files
    <Files ~ "^.*\.([Pp][Hh][Pp])">
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    คือ ห้ามรัน ไฟล์ที่ลงด้วย .php
    ใส่ .htaccess ในแฟ้ม folder ที่ต้องการ (folder ที่ให้อัพโหลดไฟล์รูป image)

    ป้องกันการกันรัน PHP Script ในโฟลเดอร์ wp-content/uploads
    ทำการสร้างไฟล์ .htaccess ไว้ใน โฟลเดอร์ wp-content/uploads
    เขียน rule ลงใน .htaccess

    <Files *.php>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    </Files>

    อื่นๆ
    http://deweyas.exteen.com/20110413/18-htaccess

    ป้องกันการแสดงรายชื่อไฟล์ของ Server ด้วย htaccess
    Directory โดยปกติแล้วถ้าเราทำการเรียกไดเร็คทอรี่ใดๆบน Server โดยที่ไดเร็คทอรี่นั้นๆไม่มี default page (เช่น index.php หรือ index.html) จะทำให้ Browser แสดงรายการไฟล์ทั้งหมดในไดเร็คทอรี่นั้นๆออกมา (Directory Listings) เช่น หากเราเรียก xxx.com/img/ Browser ก็จะทำการแสดงรายชื่อรูปทั้งหมดที่มีในโฟลเดอร์ img/ บน Server เป็นต้น

    โดยปกติ Server สมัยใหม่มักจะปิดการทำงานในส่วนนี้ไว้ไม่ให้ทำงาน เพื่อเป็นการป้องกันการตรวจสอบว่ามีไฟล์ใดบน Server บ้าง (จาก Hacker) แต่เราก็สามารถควบคุมการเปิดปิด ได้ครับ ด้วย .htaccess

    วิธีการง่ายสุดที่จะป้องกันการ list ไฟล์ ก็เพียงแค่สร้าง index.php หรือ index.html เปล่าๆไว้ในไดเร็คทอรี่(ทุกไดเร็คทอรี่) ครับ เนื่องจากโดยปกติแล้ว หากเราเรียกชื่อ ไดเร็คทอรี่ ใดๆ โดยไม่ระบุหน้าเพจ Server จะแสดงหน้านี้ก่อนเสมอ

    วิธีที่ 2 กำหนดใน .htaccess

    Options +Indexes

    สำหรับเปิดใช้งาน แสดงลิสต์รายชื่อไฟล์

    Options -Indexes

    สำหรับปิดการใช้งาน ไม่ให้แสดงรายชื่อไฟล์ Server จะคืนค่า Error 403 มา

    การกำหนดให้ไม่แสดงเฉพาะไฟล์บางนามสกุล เช่นไฟล์ รูปภาพ .jpg .gif

    IndexIgnore *.jpg *.gif

    Server จะไม่แสดงรายชื่อไฟล์รูปภาพ .jpg และ .gif (แต่ไฟล์อื่นยังแสดงตามปกติ) หรือ

    IndexIgnore *

    ซี่งจะมีผลเหมือนกับปิดการแสดง Directory Listing

    การกำหนดให้ Server แสดงไฟล์ฺ index.html (หรือไฟล์ใดๆ) ในกรณีที่ไม่ระบุ page มา

    DirectoryIndex index.html

    CMS แอบฝั่ง Script หรือ อัพโหลด Injection file เข้ามา
    อาจส่งผลให้เว็บไซต์ที่ใช้งานติด Blacklist จาก Google และ Search Engine ต่างๆ ส่งผลให้เว็บไซต์ตกอันดับ หรือถูกปิดกั้นการค้นหาจากผู้ให้บริการเหล่านี้

    วิธีการง่ายๆ เพื่อป้องกัน และเสริมสร้างความปลอดภัยให้ได้ประสิทธิภาพสูงมากคือ
    อนุญาติให้ Accesss ใช้งาน CMS ผ่าน index.php เท่านั้น

    ถึงแม้ว่าจะถูกแอบอับโหลด หรือถูกวาง Bug ผู้ไม่หวังดีเหล่านั้นก็ไม่สามารถส่งรันไฟล์ดังกล่าวได้ โดย..

    สร้างไฟล์ .htaccess ไว้ที่ public_html ของเซิร์ฟเวอร์ เว็บโฮสติ้ง หรือ root path ของเว็บไซต์ เขียนข้อมูลในไฟล์ .htaccess

    <Files *.php>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    </Files>
    
    <Files index.php>
    Order Allow,Deny
    Allow from all
    </Files>

    ตัวอย่างการเขียน .htaccess ใช้งานจริง

    เดิม

    <IfModule mod_rewrite.c>
    RewriteEngine On
    ErrorDocument 404 /index.php
    ErrorDocument 500 /index.php
    </IfModule>

    แบบนี้ทำให้ error 404 , 500 วิ่งกลับไปที่ index.php เเต่อ้างอิง path ของ style.css หรือ image ผิด ตาม url ที่เราใส่ผิดไป จึงทำให้ ไฟล์เหล่านี้ไม่ทำงาน
    เช่น ปกติ รูปจะเป็น cymiz.com/img/xxx.png
    แต่ใส่ลิ้งผิดเข้าไป เช่น cymiz.com/dsf
    ผลคือ วิ่งไปหน้า index.php ลักษณะ แบบนี้ cymiz.com/dsf/index.php ทำให้รูปเเล้ว ไฟล์ต่างๆ อ้างอิง path ผิดไปหมด หน้า index.php จึงเเสดงผิดเพี้ยน วิธีแก้ให้ทำตาม วิธีใหม่ ด้านล่างนี้

    ใหม่

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    อื่นๆ
    http://www.thaiseoboard.com/index.php/topic,317488.0.html
    webub.com/การเขียนโค้ดเล็กน้อยให้%20URL%20Friendly%20ด้วย%20%20hta-1314-48/

    Mod Rewrite Syntax การเขียน .htaccess อย่างง่ายช่วยย่อ url ที่ยาวให้สั้นลงและมีผลต่อการทำ seo
    คำสั่ง Mod Rewrite ที่เขียนนั้นจะต้องบันทึกเป็นไฟล์ .htaccess ไว้ใน Directory ของเว็บไซต์ ซึ่ง Syntax Mod Rewrite หรือคำสั่งที่ใช้ในการเขียนก็ตั้งแต่ Basic จนถึง Advance ตอนนี้เราก็มาดูคำสั่งแบบ Basic ที่ใช้กันส่วนมากกันก่อนครับ

    การที่จะให้งานคำสั่ง Mod Rewrite ได้นั้นจะต้องตั้งค่า httpd.conf  Mod Rewrite ใน Appserv ก่อนนะครับ แล้ว การเขียนคำสั่งใน Appserv กับ IIS จะไม่เหมือนกันนะครับ แต่คล้ายๆกัน แต่ผมจะแนะนำการเขียนใน Appserv นะครับเพราะส่วนใหญ่จะใช้ Appserv กัน

    ไฟล์ .htaccess

    #คำสั่งแรก RewriteEngine On เป็นคำสั่งเปิดใช้งาน mod rewirte เครื่อง # เป็นเครื่องหมายที่ใช้ในการ Comment

    RewriteEngine On

    #คำสั่ง RewriteBase คำสั่งให้สามารถให้งานฟังก์ชั่นของ PHP Version ต่ำกว่า Version ปัจจุบันได้ หรือสามารถอ่านคำสั่งอักขระพิเศษที่ Server ปิดการใช้งานไว้ อันนี้ตามที่ผมเข้าใจ
    php_flag register_globals on

    #คำสั่งเรียกที่พาสของเว็บไซต์ ถ้าไม่มีก็ไม่ต้องใส่ ถ้าเก็บไฟล์เว็บไว้ในโฟล์เดอย่อยไปอีกก็จะเขียน เช่น RewriteBase / helloworld คือเราเก็บไฟล์เว็บไว้ใน www/helloworld ถ้าไม่มีก็ใส่แค่ ส่วนใหญ่จะเป็นทดสอบใน localhost

    RewriteBase

    #คำสั่ง RewriteRule เป็นการกำหนดเงื่อนไขที่จะทำการแปลง URL เช่น

    RewriteRule

    ส่งค่าตัวแปรเดียว

    #RewriteRule ^(.*)$ ?option=topic&view=detail&name1=$1
    #RewriteRule ^([a-zA-Z0-9_-]+)$ ?option=topic&view=detail&name1=$1
    #RewriteRule ^(.*).html$ ?option=topic&view=detail&name1=$1

    ส่งค่ามากกว่า 1 ตัวแปร

    #RewriteRule ^(.*)-^(.*)$ ?option=topic&view=detail&name1=$1&name2=$2
    #RewriteRule ^(.*)-^(.*).html$ ?option=topic&view=detail&name1=$1&name2=$2
    ^(.*)$

    ความหมายคือ ส่งค่าอะไรมาก็ได้

    ^([a-zA-Z0-9_-]+)$

    ความหมายคือ ค่าที่ส่งมาได้เฉพาะค่าที่กำหนดเท่านั้น คือ 0-9 กับอักษร a-z A-Z เท่านั้น

    โดยจะส่งค่าไปที่ตัวแปร $1 จะเป็น ID หรือ ชื่อหัวข้อก็ได้ เวลาจะเรียกก็อย่าง เช่น

    www.example.com/rewriterule  อันนี้เป็น URL Mod Rewirte
    www.example.com/rewriterule.html  อันนี้เป็น URL Mod Rewirte
    www.example.com/?option=topic&view=detail&name=rewriterule  อันนี้เป็น URL จริงที่ทำงานอยู่ภายใน

    #คำสั่ง ErrorDocument 404 เป็นคำสั่งตรวจสอบไฟล์ 404 คือไม่พบไฟล์ที่ส่งมา โดยจะต้องสร้างไฟล์ 404.htnl ไว้ใน Directory ของเว็บไซต์ วิธีเขียน

    ErrorDocument 404 /helloworld/404.html

    สรุปไฟล์  .htaccess

    RewriteEngine On
    RewriteBase / hellworld
    #กรณีทดสอบใน localhost ใส่พาสที่อยู่ของเว็บ RewriteBase / hellworld
    RewriteRule ^(.*)$ ?option=topic&view=detail&name1=$1
    #เวลาเรียก URL เช่น  www.example.com/rewriterule
    ErrorDocument 404 /helloworld/404.html

    ครบถ้วน
    http://xvlnw.com/read/1921

    อื่นๆ
    seo.clisk.co.th/article/mod-rewrite-เพื่อ-SEO.html

    ป้องกันการโดนดึงรูปไปใช้ (.htaccess)

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://(.+\.)?myweb\.com/ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteRule .*\.(jpe?g|gif|png)$ http://www.myweb.com/images.gif [NC,R,L]

    ตรวจสอบจากค่า HTTP_REFERER หรือตัวที่ทำการ request รูปนั้นๆเข้ามาว่าทำการเรียกมาจากที่ใด
    โดยหากไม่ได้ทำการเรียกมาจากเว็บของเรา (myweb.com) ก็จะให้รูปที่แสดงเป็นรูป http://www.myweb.com/images.gif

    .htaccess ไปใส่ไว้ใน folder path ที่เราต้องการจะป้องกัน เช่น ต้องการป้องกัน folder images ก็เอาไปใส่ไว้ใน folder นั้นๆ images/.htaccess
    หากใส่ไว้ใน public_html หมายถึงทั้งเว็บ (ไม่แนะนำ)

    ข้อควรระวัง
    – กรณีเรามีการแลกลิ้งค์ แลกแบนเนอร์กัน
    – การดึงรูปจากเว็บในเครือของตัวเอง

    http://www.altlab.com/htaccess_tutorial.html



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories