Amankan kode PHP Anda

  • Sangat penting untuk memastikan data yang aman dari pengguna (formulir dan url dll) selain dari server OS dan server http terutama karena serangan web.
  • Ada 3 kategori untuk mengamankan kode php Anda:

Memvalidasi pengguna data

Ketika situs menawarkan formulir yang memungkinkan pengguna untuk mengambil dan mengirim konten, ini tidak cukup untuk menunjukkan format entri (alamat email, nomor telepon, jumlah produk) Server juga harus dipantau (misalnya PHP) jika datanya konvensional dengan harapan kami. Mempertimbangkan seluruh angka, mengonversi semua data yang dikirim oleh pengguna:

Validasi data dari URL atau Formulir

Hampir semua data yang diterima berasal dari URL atau formulir yang telah disiapkan webmaster. Hampir semua parameter tampilan URL menentukan seperti di bawah ini:

/index.php?rub=25

Namun parameter ini tidak boleh dimodifikasi. Tapi ini mungkin seperti di bawah ini:

 /index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1 
  • Sangat penting untuk memeriksa apakah format yang diterima melalui URL atau formulir diharapkan apa pun jenis datanya.
  • Anda dapat menggunakan fungsi filter_input () untuk memverifikasi yang sama.
  • Misalnya, jika Anda menerima email dari pengguna dari posting format dengan nama bidang sebagai email. Anda dapat memulihkan yang sama dengan:

 $ email = filter_input (INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); if ($ email) {// Entri alamat email memang format alamat surat} 

Fungsi ini dapat memfilter banyak hal: alamat IP, URL dll. Mungkin ada modifikasi seperti pengkodean string sebelum mengirim melalui URL sebagai proses oleh htmlentities ().

  • Beberapa filter dapat digabungkan menggunakan "|" .
  • Untuk memvalidasi alamat ip hanya di bawah format Ipv4:

$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);

Klik tautan berikut untuk filter:

//www.php.net/filter

Lewati konten URL yang ditampilkan

Ketika konten yang dimasukkan oleh pengguna ditampilkan di layar, itu berisi HTML atau kode JavaScript yang membuat perlindungan wajib.

Jika konten yang akan ditampilkan dalam html: Anda harus HTMLmencode pengaturan untuk mengkonversi semua karakter dalam entitas HTML yang setara. Di bawah ini adalah fungsi php untuk mengotomatiskan proses ini:

echo htmlentities ($ _ REQUEST ['content']);

Jika konten harus ditampilkan dalam URL: Anda harus urlencode konten.

PHP memiliki dua fungsi untuk melakukan pengkodean ini: urlencode () dan rawurlencode (). Perbedaan antara kedua fungsi ini adalah pengkodean area, yang pada fungsi pertama memberi dan menyediakan% 20 dan "+" di yang kedua.

 echo '//www.website?valeur='.urlencode($_REQUEST['value']); 

Jika konten harus disimpan dalam database: perlu untuk melarikan diri semua karakter dengan peran khusus di server database yang digunakan. Untuk PHP dan MySQL, fungsi mysql_escape_string () membuat semua karakter yang berpotensi berbahaya dalam string diteruskan sebagai parameter.

 $ query = 'PILIH id DARI matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['user']). '"'; 

Perhatikan bahwa server dikonfigurasi dengan opsi PHP magic_quotes, data yang dikirimkan oleh pengguna secara otomatis dilindungi dengan garis miring terbalik (garis miring terbalik). Jadi, sebelum melindungi mysql_escape_string, Anda harus "membatalkan" perlindungan dasar ini:

 $ query = 'SELECT id FROM mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['user']))). '"'; 
Artikel Sebelumnya Artikel Berikutnya

Tips