PHP Login page without username/password

slackware | Δευ, 12/22/2008 - 10:59 | 5'

Καλημέρα,

Σήμερα θα δουμε ένα άλλο διαφορετικό τρόπο για να μπορεί να κάνει κανείς login σε σελίδες που θέλει χωρίς να ανησιχεί για username/password.

Το πρώτο που έχει να κάνει είναι να φτιάξει ένα ψηφιακό πιστοποιητικό, ένα pk12 file, δηλαδή και να το βάλει στον browser, χωρις αυτο δεν θα μπορεσει να περασει στην admin web page.

Στην συνέχεια στο $users βάζει αυτά που έχει συμπληρώσει για την δημιουργεία του πιστοποιητικού του, φτιαχνει τα include files και ειναι ετοιμος :-)

Επισης καταγραφει την ip, dn, μερα και ωρα που καποιος περασε επιτυχως απο αυτη την σελιδα, ωστε να ανοιξει τις καταλληλες πορτες στο firewall. Αυτο ειναι ιδιαιτερα χρησιμο οταν πρεπει να μπαινουν σε αυτη την σελιδα παραπανω απο ενας, ή αν σου εχουν παρει το pk12 certificate.



<?php
include ('configure.php'); //Set all your mysql variables here
include ('dbconnect.php'); //Connect with MySQL DataBase

$ip=$_SERVER['REMOTE_ADDR'];
$dn=$_SERVER['SSL_CLIENT_S_DN'];
$cn=$_SERVER['SSL_CLIENT_S_DN_CN'];

if (!$_SERVER['HTTPS'] == 'on' )
{
echo "SSL is not supported <br>";
exit(-1);
}


$users=array (
"C=GR/ST=Attica/O=Your_Organization/OU=Slack/CN=Slackware/emailAddress=admin@localhost"
);


if (is_null($dn))
{
echo "You need a certficate ";
echo "Your ip is: ".$ip;
exit(0);
}

if (!in_array($dn,$users))
{
echo "Login Name not found.";
echo "If you are authorized please contact with admin[at]localhost";
exit(0);
}


$table="firewall";
$server="http://yourserver/admin_page";

$get_today=date("F j Y, H:i:s");
$active=1;

$get_cn=mysql_query("select * from $table where ip='$ip' and active=1");
$row_cn=mysql_fetch_row($get_cn);


if ( ( $row_cn[1] == NULL ) && ($row_cn[0] == NULL ) && ($row_cn[2] == NULL) )
{
//echo "No CN found Recording a new ip, cn, dn <br>";
$new_ins="insert into $table (ip,cn,dn,today,active)values('$ip','$cn','$dn','$get_today','$active')";
$query=mysql_query($new_ins);

//Redirect in login page
Redirect();
exit(0);
}


//Elegxo an exw to idio dn kai diaforetiki ip.
//An nai tote kataxwreite mia nea eggrafi
if ( ( $row_cn[1] == $dn ) && ($row_cn[2] != $ip ) )
{

$upd_ip=mysql_query("insert into $table(ip,cn,dn,today,active)values('$ip','$cn','$dn','$get_today','$active')");
if ( ! $upd_ip )
{
echo "<br>Could not insert the record ";
exit(-1);
}
Redirect();
}
elseif ( ( $row_cn[1] != $dn ) && ($row_cn[2] == $ip ) )
{
$active=2;
$ipd_act=mysql_query("insert into $table(ip,cn,dn,today,active)values('$ip','$cn','$dn','$get_today','$active')");

if(!$ipd_act){echo "Could not insert in the database<br>";exit(-1);}
Redirect();
}
else
{
//echo "You have been authenticated.<br>";
header("Location: $server");
exit(0);
}

function Redirect()
{
?>
<html>
<head>
<title>SYSTEM AUTHENTICATION System</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
#cd {
margin: auto;
height: 50px;
width: 450px;
font-family: "Courier New", Courier, mono;
font-size: 24pt;
color: #FFFFFF;
text-align: center;
font-weight: bold;
background-color: #0000FF;
vertical-align: middle;
}
-->
</style>
</head>
<body>
<h1 align="center">ADMIN AUTHENTICATION SYSTEM</h1>
<? $cn=$_SERVER['SSL_CLIENT_S_DN_CN']; echo "<font size=10><center>Hello ".$cn; echo "</font></center><BR>"; ?>
<p align="center">You will be redirected in: </p>
<SCRIPT language="JavaScript" SRC="countdown.php"></SCRIPT>
</body>
</html>

<?
}
?>
Δώσε αστέρια!

MO: 1 (ψήφοι: 25)