RSS Feed

Tentang PHP Session dan Pengamanannya

Posted on

Session, you know lah gunanya buat apa. Ini untuk bikin sebuah sesi. Namanya sesi ya jangka pendek ga panjang. Di session juga bisa store variables termasuk variables otentikasi: username (password sih ngga). Buat saya sih, saya gunakan buat nyimpen variables dari input form yang daripada dikirim via GET, mendingan simpen di session aja.

Session dimulai dan diakhiri dengan

session_start();
session_destroy();

Untuk store variable ke session, lakukan

$_SESSION['username']='sule';

Untuk manggil variable dari session, lakukan

$username = $_SESSION['username'];

Untuk bunuh variable di session, lakukan

unset($_SESSION['username'];

Ada 3 hal yang harus dilakukan untuk pengamanan yakni token, timeout, regenerate session id.

Token, digunakan untuk mengatasi Cross-Site Request Forgeries (CSRF). Orang ga bisa me-run kode bukan dari website kita, caranya:

Di form:

$_SESSION["token"] = md5(uniqid(mt_rand(), true));
e cho '< a hre f="process.php?action=logout&csrf=' . $_SESSION["token"] . '">Logout< / a>< / p>';

atau bisa juga $_SESSION[‘token’] dimasukin ke hidden input di form.

Di process:

case "logout":
    if (isset($_GET["csrf"]) && $_GET["csrf"] == $_SESSION["token"]) {
        $_SESSION = array();
        session_destroy();
    }
    break;

Timout, biar orang yang pake public computer, bisa logout sendiri kalau ga melakukan apapun selama, misalnya 600 detik atau 10 menit, caranya:

<?php 
session_start(); 
$inactive = 600;

if (isset($_SESSION["timeout"])) {
    $sessionTTL = time() - $_SESSION["timeout"];

    if ($sessionTTL > $inactive) {
        session_destroy();
        header("Location: /logout.php");
    }
}

$_SESSION["timeout"] = time();
?>

Regenerate session id, digunakan agar memang yang melakukan aktivitas ini adalah pemilik session atau user yang bersangkutan, caranya:

<?php
session_start();

if ($_POST["username"] == "admin" && $_POST["password"] == sha1("password")) {
    $_SESSION["authorized"] = true;
    session_regenerate_id();
}
?>

Demikian tentang session di PHP, semoga berguna…

Sumber:

About mangkum

Models maker and fans: building view-controller-models, financial models, statistical models and a fan of super models.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: