7. Keamanan WordPress Theme

Sebelum lebih lanjut membahas file-file templat, kita akan tinjau dulu aspek keamanan sebuah theme. Keamanan utama aplikasi php umumnya adalah dalam cara mempproses masukan baik bilangan maupun karakter. Karena itu aspek keamanan yang menjadi perhatian adalah data validasi dan sanitasi – suatu prosedur pemeriksaan data yang menjamin kalau theme aplikasi yang kita buat memenuhi kaidah praktis keamanan paling dasar.

Kenapa keamanan theme sangat penting ?

Menurut informasi di laman WordPress Codex mengenai Data Validation , diikatakan bahwa :

Data Security
Untrusted data comes from many sources (users, third party sites, your own database!, …) and all of it needs to be validated both on input and output.

Data yang keluar masuk ke database WordPress dapat berasal darimana saja. Khususnya data yang dimasukkan dari form terbuka seperti komentar atau form kontak. Karena itu adalah lebih baik kalau diasumsikan semua data yang masuk maupun keluar WordPress tidak aman dan perlu divalidasi dan sanitasi . Meskipun demikian, prosesnya masih tergantung pada asal data dan konteks bagaimana data tersebut digunakan.

Validasi dan sanitasi dapat menahan kode atau tag markup yang masuk dari kolom form “aktif” atau “dieksekusi” sebagai program misalnya penyisipan kode php, html dan javascripts. Tentu saja kalau kode yang menyisip itu “jalan” bisa menyebabkan layout theme berantakkan. Bahkan bisa saja, disisipkan gambar porno entah darimana atau teks yang tak diinginkan tampil. Bisa saja kode yang menyusup berupa SQL query sehingga situs kita menjadi rentan serangan  Cross-Site Scripting (XSS) atau SQL Injections. XSS dan SQL Injection merupakan jenis serangan yang paling sering seperti ditunjukkan oleh wordfence.com :

vulnerability-by-type

WordPress memberikan beberapa fungsi untuk  validasi data yang dapat kita gunakan untuk membuat data kita aman. Fungsi-fungsi ini membantu dengan cara :

  1. Mengkonversi karakter khusus seperti tanda petik tunggal atau ganda,  ampersands, dan tanda sama dengan lebih besar atau lebih kecil menjadi simbol ekivalen (", <, >, etc) sehingga tanda itu tak diintepretasikan sebagai kode. Cara ini disebut sebagai output sanitation atau escaping.
  2. Menjamin kalau data yang akan dimasukkan ke database adalah data yang memang kita inginkan  (contoh, cek sebuah kolom teks hanya menerima teks yang aman dan bebas dari tag HTML. Atau pastikan sebuah kolom teks hanya menerima bilangan saja, atau minimal 12 karakter, dst). Ini disebut validasi input sebagai langkah awal keamanan form masukan data yang terbuka untuk diisi oleh pengunjung misalnya form komentar, kontak, newsletter dll.

Selama tutorial ini sebagian besar akan berkaitan dengan skenario keamanan #1 yaitu sanitizing/escaping data.

Skenario #2 menjadi penting untuk theme yang tujuannya mengumpulkan data pengunjung misalnya halaman Theme Options yang akan dibicarakan di lain tutorial.

Output Sanitation/Escaping

Untuk tujuan sanitasi data fungsi yang digunakan adalah fungsi PHP  esc_attr() dan  esc_attr_e().

Kedua fungsi tersebut mengeluarkan karakter tanda petik, ampersands dan tanda greater-than and less-than ketika dijalankan dalam atribut  HTML yang dapat dimisintepretasikan sebagai sebuah kode.

sanitizing-validating-and-escaping-in-wordpress-themes-and-plugins-3-638

wp-security-validate-data

esc_attr() berarti membebaskan kode sebagai tag PHP , sedangkan  esc_attr_e() digunakan jika kita ingin mencetak dengan perintah echo yang ditampilkan di layar .

Berikut contoh penggunananya di laman templat  index .

Kode diatas menampilkan judul sebuah post tulisan. Kode fungsi  esc_attr() membungkus apapun yang ada di dalam atribut  “title=” di tag  <a> ? Semua data yang ada didalam atribut HTML diasumsikan tidak aman .

Jadi : <?php echo esc_attr( sprintf( __( 'Permalink to %s', 'book' ), the_title_attribute( 'echo=0' ) ) ); ?> dapat mengandung apa saja, termasuk karakter yang berpotensi tidak aman .

Fungsi esc_attr() menambah lapisan pelindung dengan mengkonversikan karakter tak aman menjadi entitas HTML yang ekivalen.

Untuk pendalaman masalah Data Sanitation and Validation,  silahkan baca tulisan berjudul Data Validation and Sanitization With WordPress oleh Stephen Harris.

Ok, sampai disini mudah-mudahan Anda lebih perhatian lagi dengan masalah keamanan data dalam membuat WordPress theme.

Satu pemikiran pada “7. Keamanan WordPress Theme

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *