FollowSymLinks adalah tetapan yang penting dan memainkan peranan utama untuk keselamatan pengehosan web anda. Dalam artikel kali ini kita akan berbincang dengan lanjut FollowSymLinks dengan beberapa fakta yang digunakan pada klien Apache dan CMS Drupal.

FollowSymLinks dalam fail httpd.conf dan .htaccess

Konfigurasi FollowSymLinks boleh ditemui dan dinyatakan dalam dua fail. Pertama adalah fail httpd.conf yang memngandungi tetapan konfigurasi klien pelayan web kita. Ke semua konfigurasi ini akan digunakan sewaktu klien dimulakan (boot). Fail ini mempunyai tetapan lalai (default settings) untuk pelayan. Berikut adalah baris kod dalam fail yang memegang konfigurasi ini:

Only local images are allowed.

Yang kedua adalah fail .htaccess yang digunakan untuk memintas (override) konfigurasi lalai klien pada spesifik folder atau direktori. Fail ini digunakan bagi memintas tetapan FollowSymLinks yang ditetapkan dalam fail httpd.conf, dan dalam di bawah ianya diaplikasikan kepada direktori Drupal sites/all/files. Perhatikan bahawa di dalam httpd.conf menetapkan Option FollowSymLinks untuk digunakan manakala dalam .htaccess ini pula menghasilkan kebenaran dan mengaplikasikan fungsi ini melalui Options +FollowSymLinks.

Only local images are allowed.

Sekarang mari kita lihat apakah kegunaan FollowSymLinks ini sebenarnya.

Apa itu FollowSymLinks?

Kita sudah sedia maklum bahawa FollowSymLinks digunakan untuk memberitahu pelayan web untuk menjejaki dan mengikuti pautan simbolik (symbolic links) ketika proses pencarian fail. Namun apakah yang dimaksudkan dengan kenyataan ini?

Pautan simbolik (selalunya dipanggil symlinks atau softlinks) boleh disamakan seperti shortcuts dalam Windows. Satu laman web selalunya mempunyai elemen-elemen media seperti gambar dan lain-lain kandungan ditarik atau dibaca dari kedudukan sebenar ianya disimpan.

Sebagai contoh, anda sedang melayari laman ini dan dengan menggunakan fungsi "View source" pelayar web ianya memaparkan kod yang digunakan untuk memaparkan gambar kedua di atas. Anda akan melihat kod seperti ini:

src="/sites/default/files/image-store"

yang menempatkan lokasi sebenar gambar tersebut di simpan di dalam pengehosan web. Sekiranya anda menaip atau menyalin URL untuk gambar ini pada bahagian alamat (address bar) pelayan web secara terus gambar di atas akan dipaparkan. Tetapi, sekiranya anda diberi peluang untuk akses secara  FTP di dalam hos web ini, besar kemungkinan anda tidak akan dapat menjumpai fail gambar ini pada lokasi sites/default/files/image-store. Secara umumnya fail ini mungkin tidak disimpan di sini sebaliknya di simpan dalam direktori sites/default/files/pictures.

Jadi persoalannya bagaimana pelayan tahu bahawa dia perlu menarik atau mencari fail followsymlinks-9567.png ini di folder /pictures apabila ianya dilayari oleh pengguna dengan pautan /sites/default/files/image-store? Inilah tugas sebenar pautan simbolik. Dalam sistem ini, terdapat satu arahan daripada symlink memberitahu "Sekiranya pengguna melayari pautan /sites/default/files/image-store, paparkan gambar /sites/default/files/pictures/followsymlinks-9567.png.

Jadi apakah peranan  yang dimainkan oleh FollowSymLinks?

FollowSymLinks berkait rapat dengan keselamatan pelayan. Dalam pelayan, kita tidak boleh meninggalkan atau membiarkan sesuatu perkara itu tidak ditakrifkan. Kita perlu memberitahu siapakah yang berupaya untuk mencapai sesuatu akses. FollowSymLinks adalah tetapan untuk memberitahu pelayan sama ada pengguna itu perlu menjejaki atau tidak satu-satu symlinks. Dalam erti kata lain, dalam kes ini, seandainya FollowSymLinks dimatikan atau dinyahaktif, sekiranya kita cuba akses ke /sites/default/files/image-store akan diakhiri dengan ralat 403 (access forbidden) atau 404 (not found).

Apakah perbezaan antara pautan simbolik (symbolic link) dan pautan sebenar (hard link)?

Dalam kes membicarakan mengenai symlinks, kita perlu tahu apakah yang dimaksudkan dengan hard links. Walau bagaimanapun, ianya diterangkan dalam artikel saya yang lain.

Drupal FollowSymLinks

FollowSymLinks adalah sangat penting kepada laman yang dikuasakan dengan Drupal. Dalam Drupal terdapat fungsi yang membenarkan aktiviti muat turun dilakukan secara peribadi/terkawal iaitu private download method. Kaedah ini menggunakan kelebihan FollowSymLinks dalam penghasilan pautan simbolik dan modul penulisan semula URL (URL rewriting). Oleh itu, FollowSymLinks perlu diaktifkan sekiranya menggunakan mod_rewrite. Sekiranya FollowSymLinks dan mod_rewrite dinyahaktifkan, anda akan dihidangkan dengan ralat 500 internal server error.

Nota, selalunya dan menjadi kebiasaanya FollowSymLinks sememangnya telah diaktifkan menerusi httpd.conf. Jadi ianya tidak perlu dinyatakan di dalam fail .htaccess.

FollowSymLinks dan prestasi

FollowSymLinks memerlukan pemilihan pengimbal antara keselamatan dan prestasi. Anda perlu bijak dalam membuat keputusan berdasarkan kepada keadaan dan situasi.

Sekiranya FollowSymLinks tidak diaktifkan, klien pelayan seperti Apache perlu melakukan lebihan kerja dan tugas apabila memanggil satu-satu fail. Sebagai contoh, sekiranya ianya diarahkan untuk mencari fail /index.php, klien akan membuat carian pada folder /www, /www/htdocs dan /www/htdocs/index.php. Proses pencarian berulang ini akan meningkatkan latency atau masa pendam. Hasil carian pula tidak dilakukan cache sebaliknya proses yang sama dilakukan sekiranya terdapat permintaan yang sama seterusnya.

Artikel: 
Penilaian: 
3
Your rating: None Average: 2.5 (2 votes)

Komen

Nazril's picture

agak pening2 lalat nak pahamkan menda nih.. huhu

parasolx's picture
Admin

yang itu perlu dibincangkan dekat sini.. part mana yang kurang faham tuh?

------

Hadafi Solution & Resources: http://parasolx.net
Professional in Drupal web development, theme designing, consultation and training

Nazril's picture

ok dalam contoh diatas, image gambar tu, apabila view source mmg dia paparkan link ini:

src="/sites/default/files/image-store/followsymlinks-9567.png"

tp dlm penerangan tu kata gambar asal bukan simpan disitu.. tp disimpan di sini: (betulkan saya kalau silap)

src="/sites/default/files/pictures/followsymlinks-9567.png"

jadi apabila kita nak insert gambar dalam node, kt ambil gambar dari folder /sites/default/files/picture
dan symlinks ini akan tukarkan automatik kepada folder /sites/default/files/image-store

mcmtu ker.

parasolx's picture
Admin

yea betul.. kalu perhatikan dalam Drupal terdapat satu function dibahagian Site configuration > File system, kita boleh pilih sama ada untuk paparkan semua file secara 'public' atau 'private'. kalu private dia akan activekan penggunaan symlinks. kalu keadaan biasa, Drupal akan guna direct daripada lokasi file yang sebenar.

selalunya kita tak mahu image, file atau bahan2 yang boleh didownload dari site kita leak atau keluar dari webhosting sebab akan membazir bandwidth atau isu keselamatan di mana secara umumnya pengguna dapat meneka struktur direktori dalam system.

jadi dengan symlinks, system akan faham bahawa alamat yang digunakan adalah mcm "shortcut" atau bukan lokasi yang sebenar. tetapi di lokasi yang berlainan. sebalik, jika kita cuba access path tersebut secara terus TANPA melalui sistem, itu yang keluar error 403/404 (file yang dicari tak jumpa.. selamat).

------

Hadafi Solution & Resources: http://parasolx.net
Professional in Drupal web development, theme designing, consultation and training

Nazril's picture

oh begitu.. sangat menarik.. satu pendedahan baru bagi saya..
ok dalam drupal saya v6.22 pilihannya begini

Download method:
Public - files are available using HTTP directly.
Private - files are transferred by Drupal.

sekiranya saya nak tick pada private. apa folder yang terlibat.
adakah hanya folder picture:
/sites/default/files/pictures/
ataupun folder files:
/sites/default/files/

so foder samaran yang symlink buat tu boleh tak kita rename sendiri nama lain.

parasolx's picture
Admin

semua file dan folder yang berada di bawah sites/default/files. tapi perlu ingat kesan dia. sekali kita sudah aktifkan private, kita sudah tidak boleh patah balik kepada public.

maknanya kalu webhosting yang kita gunakan tetiba tak support penggunaan FollowSymLink, semua image dan files tak boleh access dah even kita tukar kepada public.

berkenaan dengan path, sekali kita tukar kepada private, kita boleh rename dengan menggunakan modul Path atau Pathauto.

------

Hadafi Solution & Resources: http://parasolx.net
Professional in Drupal web development, theme designing, consultation and training