Fungsi Keamanan PHP: strip_tags, filter_var, Md5 dan sha1

Potensi ancaman keamanan

Mereka pada dasarnya adalah dua kelompok orang yang dapat menyerang sistem Anda

  • Peretas – dengan maksud untuk mendapatkan akses ke data yang tidak sah atau mengganggu aplikasi
  • Pengguna – mereka mungkin secara tidak sadar memasukkan parameter yang salah dalam formulir yang dapat berdampak negatif pada situs web atau aplikasi web.

Berikut ini adalah jenis serangan yang perlu kita waspadai.

SQL Injection – Jenis serangan ini menambahkan kode berbahaya ke dalamnya SQL pernyataan.

Hal ini dilakukan dengan menggunakan formulir masukan pengguna atau URL yang menggunakan variabel.

Kode yang ditambahkan mengomentari kondisi dalam klausa WHERE pada pernyataan SQL. Kode yang ditambahkan juga bisa;

  • masukkan kondisi yang akan selalu benar
  • menghapus data dari tabel
  • memperbarui data dalam tabel
  • Jenis serangan ini biasanya digunakan untuk mendapatkan akses tidak sah ke suatu aplikasi.

Skrip lintas situs – jenis serangan ini biasanya memasukkan kode berbahaya JavaSkrip. Hal ini dilakukan dengan menggunakan formulir masukan pengguna seperti formulir kontak kami dan formulir komentar. Hal ini dilakukan untuk;

  • Ambil informasi sensitif seperti data cookie
  • Arahkan pengguna ke URL lain.
  • Ancaman lainnya dapat mencakup – Penyuntikan kode PHP, Penyuntikan Shell, Penyuntikan Email, Pengungkapan Kode Sumber Skrip, dll.

Praktik Terbaik Keamanan Aplikasi PHP

Sekarang mari kita lihat beberapa praktik terbaik Keamanan PHP yang harus kita pertimbangkan ketika mengembangkan aplikasi kita.

PHP strip_tags

Fungsi strip_tags menghapus HTML, JavaNaskah atau tag PHP dari sebuah string.

Fungsi ini berguna ketika kita harus melindungi aplikasi kita dari serangan seperti cross site scripting.

Mari kita pertimbangkan sebuah aplikasi yang menerima komentar dari pengguna.

<?php

$user_input = "Your site rocks";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Dengan asumsi Anda telah menyimpan comments.php di folder phptuts, telusuri URL-nyahttp://localhost/phptuts/comments.php

PHP strip_tags

Mari kita asumsikan Anda menerima yang berikut sebagai input pengguna alert(‘Your site sucks!’);

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Telusuri ke URL http://localhost/phptuts/comments.php

PHP strip_tags

Sekarang mari amankan aplikasi kita dari serangan tersebut menggunakan fungsi strip_tags.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

Telusuri ke URL http://localhost/phptuts/comments.php

PHP strip_tags

Fungsi filter_var PHP

Fungsi filter_var digunakan untuk memvalidasi dan membersihkan data.

Validasi memeriksa apakah datanya tipe yang benar. Pemeriksaan validasi numerik pada string mengembalikan hasil yang salah.

Sanitasi adalah menghilangkan karakter ilegal dari a string.

Cek link ini untuk referensi lengkapnya filter_var

Kode ini untuk sistem komentar.

Ia menggunakan fungsi filter_var dan konstanta FILTER_SANITIZE_STRIPPED untuk menghapus tag.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

Keluaran:

alert('Your site sucks!');

fungsi mysqli_real_escape_string Fungsi ini digunakan untuk melindungi aplikasi terhadap injeksi SQL.

Mari kita asumsikan bahwa kita memiliki pernyataan SQL berikut untuk memvalidasi id pengguna dan kata sandi.

<?php
SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass';
?>

Pengguna jahat dapat memasukkan kode berikut di kotak teks id pengguna. ' ATAU 1 = 1 — Dan 1234 di kotak teks kata sandi Mari kita kodekan modul otentikasi

<?php

$uid = "' OR 1 = 1 -- ";

$pwd = "1234";

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Hasil akhirnya adalah

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

SINI,

  • “SELECT * FROM users WHERE user_id = ”” menguji id pengguna yang kosong
  • “' OR 1 = 1 “ adalah suatu kondisi yang selalu benar
  • “–” mengomentari bagian yang menguji kata sandi.

Kueri di atas akan mengembalikan semua pengguna. Sekarang mari gunakan fungsi mysqli_real_escape_string untuk mengamankan modul login kita.

<?php

$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");

$pwd = mysqli_real_escape_string("1234");

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Kode di atas akan ditampilkan

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Note kutipan tunggal kedua telah lolos untuk kami, itu akan diperlakukan sebagai bagian dari id pengguna dan kata sandi tidak akan dikomentari.

PHP Md5 dan PHP sha1

Md5 adalah singkatan dari Message Digest 5 dan sha1 adalah singkatan dari Secure Hash Algorithm 1.

Keduanya digunakan untuk mengenkripsi string.

Setelah sebuah string dienkripsi, mendekripsinya akan menjadi hal yang membosankan.

Md5 dan sha1 sangat berguna saat menyimpan password di database.

Kode di bawah ini menunjukkan implementasi md5 dan sha1

<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>

Dengan asumsi Anda telah menyimpan file hashes.php di folder phptuts, telusuri URL-nya

PHP Md5 dan PHP sha1

Seperti yang dapat Anda lihat dari hash di atas, jika penyerang memperoleh akses ke database Anda, mereka tetap tidak mengetahui kata sandi untuk login.

Ringkasan

  • Keamanan mengacu pada langkah-langkah yang diterapkan untuk melindungi aplikasi dari serangan yang tidak disengaja dan berbahaya.
  • fungsi strip_tags digunakan untuk menghapus tag seperti dari data masukan
  • fungsi filter_var memvalidasi dan php membersihkan data input
  • mysqli_real_escape_string digunakan untuk membersihkan pernyataan SQL. Ini menghilangkan karakter jahat dari pernyataan
  • MD5 dan SHA1 digunakan untuk mengenkripsi kata sandi.