Kejadian error “403 forbidden access to this resource on the server is denied” pernah saya alami ketika ingin memposting sebuah artikel baru dengan memasukkan tag <script>, namun bukannya tersimpan ke database, malah 403 forbidden yang didapat. Menyebalkan ya?
Oya, website yang saya gunakan itu buatan sendiri.
Saat itu, saya berfikir untuk mengubah website tersebut ke CMS wordpress dan setela itu saya coba lagi membuat artikel baru dengan memasukkan tag <script> dan…… damn, artikelnya berhasil masuk ke database dan tidak ada error ‘403 forbidden’..! Hm, Aneh kan? Kenapa kalau pakai wordpress kok malah bisa?
Lalu sebenarnya apa sih masalahnya? nah sobat, setelah 4 hari cari tahu akhirnya ketemu permasalahannya. Permasalahannya ada di $_POST (menurut analisa kuat saya).
Saya pikir, di server tempat saya langganan web hosting ada sebuah aplikasi untuk mengecek/memfilter method “POST”. Jadi misalkan sobat punya POST dengan nama $_POST[‘data’], dan ingin memasukkan tag <script> ke dalam artikel tersebut, kemungkinan besar tidak bisa.
Contohnya disini http://ambar-hasbiyatmoko.com/test/test_form.php, coba sobat masukkan tag <script> lalu tekan submit, maka akan error ‘403 forbidden bla bla bla’.
Nah sekarang coba ganti $_POST[‘data’] dengan $_POST[‘data’][‘wp_autosave’][‘content’] (POST punya wordpress) dan masukkan tag <script> di sini http://ambar-hasbiyatmoko.com/test/test1_form.php, gimana? pasti bisa kan? 😀
Kenapa kok bisa? ya sesuai analisa yang saya jabarkan di atas tadi, web hosting tersebut punya aplikasi untuk memfilter $_POST, jadi kalau nama POST-nya berasal dari CMS terkenal seperti wordpress, joomla dkk ya bakalan aman-aman saja tidak terkena 403 forbidden. Sebaliknya kalau nama $_POST-nya tidak sesuai kriteria, bisa jadi kena 403 forbidden.
Namun, jika sobat sudah pakai $_POST[‘data’][‘wp_autosave’][‘content’] tapi tetap tidak berhasil juga, solusi lainnya adalah mengubah nama file menjadi admin-ajax.php. Contohnya ada disini http://ambar-hasbiyatmoko.com/test/admin-ajax.php.
admin-ajax.php merupakan sebuah file milik wordpress yang terletak di wp-admin/admin-ajax.php dan fungsinya untuk autosave post dengan ajax. Solusi ini saya dapatkan dari hasil oprek-oprek karena penasaran. hehe
Solusi lainnya jika masih tidak bisa :
1. Kirim tiket ke pihak hosting untuk mendisable filter $_POST
2. Pakai nama $_POST dari CMS yang terkenal
3. Kalau gak mempan juga, ya pindah hosting saja. 😀
Solusi 1 dan 3 menurut saya paling recommended 😀
VIDEO :