Proteksi halaman Admin with PHP Session_CMS Balitbang

Sebelumnya saya mo berterima kasih dulu kepada guru saya (rahmat saepulloh) yang sudah membimbing saya belajar PHP dan sudah mengajarkan saya beberapa hal yg membuat saya ingin bisa untuk melakukan nya :D . Kebetulan sedang meneruskan Job yang kemarin , saya juga berpikir untuk memasang halaman sesi di halaman admin balitbang. Script sesi ini juga tidak saya coding sendiri kok , saya cuman recode doank dari guru saya,, dan saya akan share bagaimana kita memproteksi halaman admin nya dengan " memindahkan halaman admin " dan kemudian " memproteksi halaman admin nya ".
Langsung saja ke Tutorialnya :

1. Buka dir halaman admin balitbang, Seperti gambar di bawah ini : 

Nah itu file"nya ,, kemudian kita buat dir.. disini misalnya nama dirnya dir , sudah dibuat lalu copy semua file" tersebut ke dir dir.

2. Jika sudah , masih tetap di dir admin. Itu kan ada 2 file namanya admin.php sama index.php, mari kita edit dahulu kedua file tersebut. Sebelum di edit backup dulu file admin.php sama index.php nya.
- Edit di bagian index.php, masukan script :
<?php
session_start();
if (isset($_SESSION['Admin']))
{
    session_destroy();
    echo "Anda telah melakukan login, silahkan untuk login kembali";
    echo "<meta http-equiv=\"refresh\" content=\"1;url=index.php\">\n";
    }
else {
    if ( !isset($_POST['username']) || !isset($_POST['password']) )
    {
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> .: Login Administrator :. </title>
<link rel="stylesheet" type="text/css" href="style.css"/>

</head>
<body>
<!-- This P tag shows Error mesage -->

<form method="POST" action="index.php">
    <center>
    <div  class="display_green">
            <table cellspacing="0" cellpadding="0" border ="0">
            <tr>
             <td colspan="3"><center>.: Login Administrator :.</center></td>
            </tr>
            <tr><td rowspan="3"><img src="login.png" width="60" height="60" align="left" /></td>
                <td>Username </td><td><input type="text" name="username" id="uname"/></td>
            </tr>
            <tr>
                <td>Password </td><td><input type="password" name="password" id="pass"/></td>
            </tr>
            <tr>
                <td align="left"><input type="submit" name="login" value="Login" id="submit"/></td>
            </tr>
            <tr>
            </table>
            </div>
    </center>
</form>
</body>
</html>    
        <?php
    } else {
        require '../functions/koneksi.php';
        include "../functions/fungsi_pass.php";
        echo "<html>\n<head>\n<title>Login Administrator</title>\n
        <link rel='stylesheet' type='text/css' href='style.css'>
        </head>\n<body>\n";
    
        $username = addslashes($_POST['username']);
        $password = hex(addslashes($_POST['password']),82);
        $ret = mysql_query("SELECT * FROM user WHERE username =
        '".mysql_escape_string($username)."' AND password = '". mysql_escape_string($password) ."' and status='1' limit 0,1");
        if (@mysql_num_rows($ret) != 0)
        {
            $ret = mysql_fetch_array($ret);
            $_SESSION['Admin'] = $ret;
            $timeout = 9000;
            $_SESSION["expires_by"] = time() + $timeout;
            $username = $_SESSION['Admin']['username'];
            $kunjung = strval($_SESSION['Admin']['kunjung']) + 1;
            $tgl = date("H:i:s")." ".date("d/m/Y");
            $q=mysql_query("update user set waktu='$tgl',ip='".$_SERVER['REMOTE_ADDR']."',kunjung='$kunjung' where username='$username' ");
            echo "Selamat Datang $username.. redirecting\n";
            echo "<meta http-equiv=\"refresh\" content=\"1;url=admin.php\">\n";
        
        } else {
            echo '<center><div  class="display_red">
            <table cellspacing="0" cellpadding="0" border ="0">
            <tr>
             <td colspan="2"><center>.: Login Administrator :.</center></td>
            </tr>
            <tr><td ><img src="login.png" width="60" height="60" align="left" ></td>
                <td>Maaf username dan password salah</td>
            </tr>
            </table>
            </div></center>';
            echo "<meta http-equiv=\"refresh\" content=\"1;url=index.php\">\n";
        }
        echo "</body>\n</html>\n";
    }
}

?>
- Edit di bagian admin.php , masukan Script :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> .: Login Administrator :. </title>
<link rel="stylesheet" type="text/css" href="style.css"/>

</head>
<body>
<!-- This P tag shows Error mesage -->

<form method="POST" action="admin.php">
    <center>
    <div  class="display_green">
            <table cellspacing="0" cellpadding="0" border ="0">
            <tr>
             <td colspan="3"><center>.: Login Administrator :.</center></td>
            </tr>
            <tr><td rowspan="3"><img src="login.png" width="60" height="60" align="left" /></td>
                <td>ANDA TIDAK BISA MASUK TANPA IZIN ADMIN. :P :D :D :D</td>
            </tr>
            <tr>
                <td></td>
            </tr>
            <tr>
                <td align="left"><input type="submit" name="login" value="Login" id="submit"/></td>
            </tr>
            <tr>
            </table>
            </div>
    </center>
</form>
</body>
</html>
3. Jika sudah edit"nya , kita pindah ke halaman dir baru yang tadi namanya dir .
Sudah backup kan file admin.php sama index.php yang asli ? jika sudah paste / buat file itu di dir dir. Jika sudah di buat Copy juga file yg berada di halaman admin tadi diantaranya :
admin.css
login.png
pal.html
palette.html
style.css
4. Masih di directory dir , kita buat file bernama destroy.php.
Dan isikan script :
<?php
session_start();
session_destroy();
?>
Kemudian Save jangan lupa :D

5. Semua telah Selsai untuk pemindahan dir admin, kita lanjutkan untuk membuat script session di public_html.
Pindah dir ke public_html dan buat sebuah file bernama astaga.php.
Scriptnya : 
<?php
session_start();
if(isset($_POST['astaga'])) {
    $pass = $_POST['astaga'];
    $passses = "5faffde5a5dc715374d21afbdb3738eb";
    $passmd5 = md5($pass);
    if ($passses==$passmd5) {
            $_SESSION['fake'] = $passses;
            header('Location: dir/index.php');
        }
        else
        {
        $error = "Wrong Code. Try Again!";
    
        }
    }
?>
<html>
<body OnLoad="document.form.astaga.focus();">

<form name="form" action="astaga.php" method=POST>
<input type=text name=astaga size=20 required>
<input type=submit name=submit value="GO">
</form>
</body>
<font face=tahoma size=5 color=blue>
<?php
if (isset($error)) {
    echo $error;
}
?>
</font>
Password : syndrom.
Untuk masalah Script dan tipe hashnya,, mungkin anda sendiri bisa memperkuat agar bisa mengecoh sang hacker. :D

6. Sudah Selesai kita dengan pemindahan Dir dan membuatn File Sesinya, mari kita coba seperti apa yang terjadi :

Terlihat ketika kita sudah memasuki halaman admin, tidak bisa masuk :D . Tapi, bagaimana jika si hacker itu sudah tau halaman admin nya melalui jumping dari shell ???
Jangan khawatir, kita kan disini membahas sesi, jadi harus melewati sesi dulu baru bisa , misalnya gini :
Si hacker dah tau bahwa halaman admin nya di :

http://localhost/webtemp/dir/

Dir yang kita buat tadi.. percuma ga bisa login, kan harus ke astaga.php dulu :D . Tapi bang bagaimana juga kalo si hacker dah tau kata kunci astaga.php melalui jumping shell dan kemudian di decrypt ??? Seperti yang saya katakan tadi di atas, Anda bisa edit lagi Script astaga.php dan mengubah tipe hash / bisa juga memperpendek bit md5 , mungkin di thread selanjutnya saya akan bahas, karna saya juga masih belajar. :D