Gå til innhold

passord beskyttelse på siden


Anbefalte innlegg

Hei!

 

Jobber med en hjemmeside til klassen nå, først og fremst i CSS og HTML, så kan ikke så mye PHP.

 

Men noen som vet om et script, som man trenger et passord for å komme inn på siden, altså KUN ett passordfelt. Ikke noe brukernavn, et felles passord for alle.

 

Også, skal man jo ikke komme rundt ved å taste http://www.minurl.net/start.html isteden liksom.

 

 

Rett og slett et script som sjekker om du har den nødvendige cookien eller hva faen det bruker, hvis ja, så kommer du inn, hvis nei, så kommer du ikke inn og får en feilmelding.

 

Altså, denne trenger ikke være skuddsikker, men ihvertfall så ikke enhver idiot kommer inn sånn uten videre.

 

Noen som kan hjelpe? :)

 

Takk :D

 

Edit:

 

Vær så snill, og ikke si .htaccess nå :no:

Det skjønner jeg ikek noe av xD

Bare et enkelt script, hvis det er mulig :)

Endret av VisualStudio
Lenke til kommentar
Videoannonse
Annonse

Okey du kan prøve dett:

 

config.php

 

<?php
$admin    = "admin";
$password = "password";
?> 

 

login.php

 

<?php
error_reporting(E_WARNING); 
ob_start(); 
session_start(); 
include_once("config.php"); 
if($_POST['Go']=="Go"){ 


   $p = $_POST['password']; 
   $a = $_POST['admin']; 
    
   //if the passwords match 
    
   if(($admin==$a)&&($password==$p)){ 
    
       //clear previous sessions 
    
       unset($_SESSION['admin']); 
       unset($_SESSION['password']); 
    
       //start a new session 
    
       $_SESSION['admin'] = $a; 
       $_SESSION['password'] = $p; 
          
       //redirect to the protected webpage 
          
       header("Location:admin.php"); 
        
   } 
   else{ 
    
    
     $errors .='<p class="red">Error logging in. Please check  
                 your details</p>'; 
   }   
} 
?> 
<link rel="stylesheet" type="text/css" href="lstyle.css"/>
<div class="login"> 
<form action="login.php" method="post"> 
<table> 
 <tr> 
  <td>Username</td> 
   <td><input type="text" name="admin"/></td> 
 </tr> 
 <tr> 
   <td>Password</td> 
   <td><input type="password" name="password"/></td> 
 </tr> 
 <tr> 
   <td></td> 
   <td> 
     <input type="submit" value="Go"/> 
     <input type="hidden" name="Go" value="Go"/></td> 
 </tr> 
</table> 
</form>
<a href="index.php">Tilbake</a>
<?=$errors?> 
</div> 

 

admin/password protected siden

putt d i toppen

 

 

<?php 
ob_start(); 
session_start(); 
include_once("config.php"); 
if(!isset($_SESSION['admin'])||!isset($_SESSION['password'])|| 
     $_SESSION['admin']!=$admin||$_SESSION['password']!=$password){ 
     header("Location:login.php"); 
     exit; 
} 
?>

 

Det må selfølgelig noen endreinger til da men d er ikke så vansklig

 

MvH tehextinct

Lenke til kommentar

eller:

 

<?php

$password = 'hemmelig passord';
$side = 'navn på siden som skal vises';

if($_POST['password'] == $password)
{
 include($side);
} else {
 echo '
<html>
<body>
<form action="" method="post">
Skriv passord:<input type="password" name="password" value="">
</form>
</body>
</html>
';
}
?>

Endret av grimjoey
Lenke til kommentar
eller:

 

<?php

$password = 'hemmelig passord';
$side = 'navn på siden som skal vises';

if($_POST['password'] == $password)
{
 include($side);
} else {
 echo '
<html>
<body>
<form action="" method="post">
Skriv passord:<input type="password" name="password" value="">
</form>
</body>
</html>
';
}
?>

8431671[/snapback]

 

 

Blokkerer denne forsøk på å å rundt?

Helst, så skal alt blokkeres, hvis ikke man har tastet inn passord.

 

 

Altså, passordet skal heslt ikke finnes i kildekoden. Vil den bli synlig her?

 

Takk for svar :D

Lenke til kommentar

står i første post at .htaccess ikke skulle nevnes.

 

scriptet mitt viser en rute hvor man skal skrive inn passord. når riktig passord skrives inn blir filen du skriver inn som $side inkludert slik at den vises. passordet vil befinne seg i php-kildekoden, men ikke html source hvis det var det du tenkte på.

 

php er server side. det vil si at scriptet tolkes før det blir sendt til en web client. scriptet er ikke synlig for de som leser siden. kun til de som har leserettigheter på den filen på serveren utenom http.

 

edit. det kan lønne seg å lage et vanskelig navn på filen som skal inkluderes, eventuelt legge den i en beskyttet bane eller bane hvor webserveren ikke gir tilgang fra web.

 

ilpostino: .htaccess er vel ikke spesifikt linux. tror det funker på win med apache. vet at det funker i flere *nixer. ... (edit: etter å ha fulgt linken du oppgav, får jeg inntrykk av at .htaccess er apache spesifikt.)

Endret av grimjoey
Lenke til kommentar
står i første post at .htaccess ikke skulle nevnes.

 

scriptet mitt viser en rute hvor man skal skrive inn passord. når riktig passord skrives inn blir filen du skriver inn som $side inkludert slik at den vises. passordet vil befinne seg i php-kildekoden, men ikke html source hvis det var det du tenkte på.

 

php er server side. det vil si at scriptet tolkes før det blir sendt til en web client. scriptet er ikke synlig for de som leser siden. kun til de som har leserettigheter på den filen på serveren utenom http.

 

edit. det kan lønne seg å lage et vanskelig navn på filen som skal inkluderes, eventuelt legge den i en beskyttet bane eller bane hvor webserveren ikke gir tilgang fra web.

 

ilpostino: .htaccess er vel ikke spesifikt linux. tror det funker på win med apache. vet at det funker i flere *nixer. ... (edit: etter å ha fulgt linken du oppgav, får jeg inntrykk av at .htaccess er apache spesifikt.)

8433361[/snapback]

Jojo, ok.

 

Men kan ejg komme rundt, uten å skrive inn passordet?

For på startsiden, vil det jo være linker...

Lenke til kommentar

du får to filer. script.php og siden_din.htm. siden_din vises gjennom script.php så det er det som blir synlig i adresselinjen: http://www.dinsite.no/script.php

 

her må du ha riktig passord for å kunne komme inn. Ingen vei utenom fra weben, med mindre noen klarer å gjette navnet på siden_din.htm og viser den direkte.

 

Enten lag et langt og vanskelig navn på den, eller best er å legge den i en beskyttet bane som ikke er tilgjengelig fra web.

Lenke til kommentar

hvis apache/evt annen webserver ikke klarer å loade php modulen... da vises all koden.

 

sant som ståle sier. lag en md5 av passordet du vil bruke

 

$password = 'fhalsfhlasjfkjasdghfasdf'; #md5sum fra passordet du vil bruker eller sha.

 

så må du legge til md5/sha() rundt $_POST['password'] i if'en

 

 

For å gjøre det enkelt.

 

denne lager passordhash til deg. cutnpaste til neste script

<?php

echo(sha1('----bytt-med-ønsket-passord----'));

?>

 

her cutnpaster du strengen fra forrige script inn i [$password = 'streng her';]

<?php

$password = 'sha1 sum av hemmelig passord';
$side = 'navn på siden som skal vises';

if(sha1($_POST['password']) == $password)
{
include($side);
} else {
echo '
<html>
<body>
<form action="" method="post">
Skriv passord:<input type="password" name="password" value="">
</form>
</body>
</html>
';
}
?>

Endret av grimjoey
Lenke til kommentar

Ok. Men blir det slik da:?

 

 

<?php

$password = echo(sha1('passord'));
$side = 'navn på siden som skal vises';

if(sha1($_POST['password']) == $password)
{
include($side);
} else {
echo '
<html>
<body>
<form action="" method="post">
Skriv passord:<input type="password" name="password" value="">
</form>
</body>
</html>
';
}
?>

Lenke til kommentar

hvordan kan du hente ut et passord fra mysql. Får opp rett verdi på variablene men får ikke logget inn med de.

 

Her er koden jeg har brukt

 

 

Henter ut variablen $profile fra adressen.

<?PHP
$illegal = 'script|http|<|>|%3c|%3e|SELECT|UNION|UPDATE|AND|exe|exec|INSERT|tmp';  


foreach ($_GET as $key => $param) {
if (preg_match("/$illegal/i", $param)) die('<b>Error:</b> URL Injection Prevention!');
}


$profile = $_GET['profile'];
?>

 

Henter passordet fra mysql

<?PHP
$id = $profile;
$host = "localhost";
$user = "root";
$password = "****";
$connection = mysql_connect ($host, $user, $password);
mysql_select_db("profile", $connection);
$sql = "SELECT passord FROM profile WHERE id='$id'";
$res =  mysql_fetch_array(mysql_query ($sql));
mysql_close($connection);


?>

 

config.php

<?php
$admin    = $profile;
$password = $res['passord'];
?>

Lenke til kommentar

takk. får brukt passordet da, men får fortsatt ikke godkjent brukernavnet som er $profile

 

EDIT: får vist ikke brukt passordet heller så lenge "$id = $profile;". virker må sette en statisk verdi for $id for at det skal fungere

Endret av Zyrex_
Lenke til kommentar

hvis du ikke har noe i mot javascript kan du jo bruke denne:

 

classes/dbBase.class.php:

Klikk for å se/fjerne innholdet nedenfor
<?php
/**
*
* Class: dbBase - configuration information
*
**/
class dbBase
{

 var $settings;
 
 function getSettings()
 {
 
   // System variables
   $settings['sitePath'] = '';
   
   // Database variables
   $settings['dbHost'] = 'localhost';
   $settings['dbUser'] = 'username';
   $settings['dbPass'] = 'password';
   $settings['dbName'] = 'database';
   
   return $settings;

 }
 
}
?>

classes/dbTraffic.class.php

Klikk for å se/fjerne innholdet nedenfor
<?php
//////////////////////////////////////////
// Class: dbTraffic
// Notes: MySQL db communicator.
//////////////////////////////////////////
require_once('classes/dbBase.class.php');

class dbTraffic extends dbBase
{

 var $theQuery; // Holds query before escaped.
 var $escQuery; // Holds query after escape.
 var $link;     // Database link handle.
 
 // String escape function gotten from www.diskusjon.no
 private function quoteSmart($qry)
   {
   // Stripslashes
   if (get_magic_quotes_gpc()) {
     $qry = stripslashes($qry);
   }
   // Quote if not a number or a numeric string
   if (!is_numeric($qry)) {
     $qry = "'" . mysql_real_escape_string($qry) . "'";
   }
   return $qry;
 }
 
 // Opens a database connection using settings from dbBase.
 public function open()
 {
   
   $settings = $this->getSettings();
   
   $host = $settings['dbHost'];
   $user = $settings['dbUser'];
   $pass = $settings['dbPass'];
   $db = $settings['dbName'];
   
   $this->link = mysql_connect($host, $user, $pass);
   mysql_select_db($db);
#    register_shutdown_function(array(&$this, 'close'));
 }
 
 // Sends an escaped query to database. Returns result handle.
 public function query($query)
 {
   $this->open();
   $this->theQuery = $query;
   $this->escQuery = $this->quoteSmart($query);
   if(!$result = mysql_query($this->theQuery)) echo(mysql_error());
   $this->close();
   return($result);
 }
 
 // Takes an SQL query as an argument and returns object.
 public function getObj($query)
 {
   $result = $this->query($query);
   return mysql_fetch_object($result);
 }
 
 // Close database connection. Registered as shutdown function.
 private function close()
 {
   mysql_close($this->link);
 }
}
?>

classes/dbAuth.class.php

Klikk for å se/fjerne innholdet nedenfor
<?php
/**
*
* Class: dbAuth - authentication
*
* Methods:
*
*   isAuth()
*     Returns 1 if user have a valid key and ip compared to database. Returns 0 otherwise.
*
*   doAuth()
*     Checks username and key with database. If valid, stores nonce and ip, and returns 1. Returns 0 otherwise.
*
*   createUser(username, password, email)
*     Create a user in the database.
*
*   deleteUser(username or userid)
*     Deletes user from database.
*
**/
require_once('classes/dbTraffic.class.php');

function shaen($msg)
{
 return $msg;
}

class dbAuth extends dbTraffic
{

 var $prefix = 'auth';

 // Create stronger hash from password.  
 private function createKey($password)
 {
   $seed = substr($password, 0, 6);
   $password = $seed.$password;
   for($i = 0; $i <= 1000; $i++)
   {
     $password = sha1($password);
   }
   return $password;
 }
 
 
 // Create necessary tables.
 private function createTables()
 {
   $crUserTable = '
CREATE TABLE '.$this->prefix.'User (
uid INT(6) NOT NULL PRIMARY KEY auto_increment,
username VARCHAR(20),
password VARCHAR(40),
nonce VARCHAR(10),
ip VARCHAR(15),
email VARCHAR(60)
);
';
   $crGroupTable = '
CREATE TABLE '.$this->prefix.'Group (
gid INT(2) NOT NULL PRIMARY KEY auto_increment,
groupname VARCHAR(10)
);
INSERT INTO '.$this->prefix.'Group VALUES(
"",
"users"
);
';
   $crUserGroup = '
CREATE TABLE '.$this->prefix.'UserGroup (
uid INT(6),
gid INT(2),
PRIMARY KEY(uid, gid)
);
';
   $a = $this->query($crUserTable);
   $b = $this->query($crGroupTable);
   $c = $this->query($crUserGroup);
   $d = variant_and($a,$b);
   return variant_and($c, $d);
 }
 
 // Create user.
 public function createUser($username, $password, $email)
 {
   $password = $this->createKey($password);
   $qry = 'INSERT INTO '.$this->prefix.'User(uid, username, password, email) VALUES("", "'.$username.'", "'.$password.'", "'.$email.'");';
   $a = $this->query($qry);
   $qry = 'INSERT INTO '.$this->prefix.'UserGroup VALUES((SELECT uid FROM '.$this->prefix.'User WHERE username = "'.$username.'"),(SELECT gid FROM '.$this->prefix.'Group WHERE grouname="users"));';
   $b = $this->query($qry);
   return variant_and($a, $b);
 }
 
 // Delete user.
 public function deleteUser($input)
 {
   if(is_numeric($input)) // if numeric expect sid, else expect username.
   {
     $method = 'uid = "'.$input.'"';
     $uid = $input;
   } else {
     $method = 'username = "'.$input.'"';
     $qry = 'SELECT uid FROM '.$this->prefix.'User WHERE '.$method.';';
     $obj = $this->getObj($qry);
     $uid = $obj->uid;
   }
   $qry = 'DELETE FROM '.$this->prefix.'User WHERE '.$method.';'; // Delete user.
   $a = $this->query($qry);
   $qry = 'DELETE FROM '.$this->prefix.'UserGroup WHERE uid = "'.$uid.'";'; // Delete user - group relations.
   $b = $this->query($qry);
   return variant_and($a, $b);
 }
 
 // Check key and ip with database.
 public function isAuth($key, $nonce, $ip, $group = 'users')
 {
   $qry = 'SELECT nonce_c FROM '.$this->prefix.'User WHERE ip = "'.$ip.'";';
   $obj = $this->getObj($qry);
   $nonce_c = $obj->nonce_c;
   $this->query('UPDATE '.$this->prefix.'User SET nonce_c = "'.$nonce.'";');
   $qry = 'SELECT password, nonce, groupname FROM '.$this->prefix.'User, '.$this->prefix.'Group, '.$this->prefix.'UserGroup WHERE '.$this->prefix.'User.uid = '.$this->prefix.'UserGroup.uid AND groupname = \''.$group.'\' AND ip = \''.$ip.'\' LIMIT 1;';
   $obj = $this->getObj($qry);
   $dbNonce = $obj->nonce;
   $dbKey = sha1($nonce_c.sha1($dbNonce.$obj->password));
   $dbGroup = $obj->groupname;
   if(($key == $dbKey) && ($group == $dbGroup))
   {
     return 1;
   } else {
     return 0;
   }
 }
 
 // Check username and password with database. Store ip and nonce.
 public function doAuth($username, $key, $nonce1, $nonce2, $ip, $group = 'users')
 {
   $this->query('UPDATE '.$this->prefix.'User SET nonce_c = "'.$nonce1.'";');
   $a = 0;
   $qry = 'SELECT password FROM '.$this->prefix.'User WHERE username = \''.$username.'\';';
   $obj = $this->getObj($qry); // Get password.
   $dbKey = sha1($nonce2.$obj->password); // Create key.
   if(!strcmp($key, $dbKey)) // Compare keys
   {
     $a = 1; // (*)
     $qry = 'UPDATE '.$this->prefix.'User SET nonce = "'.$nonce1.'" WHERE username = "'.$username.'";';
     $this->query($qry); // Store nonce.
     $qry = 'UPDATE '.$this->prefix.'User SET ip = "'.$ip.'" WHERE username = "'.$username.'";';
     $this->query($qry); // Store nonce.
   } else {
     return 0; // (**)
   }
   // Check if user is in group which have access to page being requested.
   $qry = 'SELECT username FROM '.$this->prefix.'User, '.$this->prefix.'UserGroup, '.$this->prefix.'Group WHERE username = "'.$username.'" AND '.$this->prefix.'UserGroup.uid = '.$this->prefix.'User.uid AND '.$this->prefix.'Group.gid = '.$this->prefix.'UserGroup.gid AND '.$this->prefix.'Group.groupname = "'.$group.'";';
   if($this->getObj($qry)) $a = $a + 1; // (***)
   return($a); // Returns 1 (*) if user is valid but not in group, 2 (***) if both valid and in group, 0 otherwise (**).
 }
 
 // Store nonce to prevent reuse
 private function dbNonce($mode, $nonce)
 {
   if(!isset($mode) || !isset($nonce)) return(0);
   switch($mode)
   {
     case 'put':
       $obj = $this->getObj('SHOW TABLES;');
       if(!in_array($obj, 'nonce')) $this->query('CREATE TABLE nonce (nonce VARCHAR(10) NOT NULL PRIMARY KEY);');
       $this->query('INSERT INTO nonce values('.$nonce.');');
       break;
     case 'cmp':
       $this->query('SELECT nonce FROM nonce where nonce=\''.$nonce.'\';');
       break;
   }
 }
 
 // Generate nonce
 public function genNonce($length)
 {
   $return = '';
   $chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz01234567890123456789";
   for($i = 0; $i < $length; $i++)
   {
     $return = $return.$chars[mt_rand(0, (strlen($chars) - 1))];
   }
#    if($this->dbNonce('cmp', $return))
#    {
#      $return = genNonce($length);
#    } else {
#      $this->dbNonce('put', $return);
#    }
   return $return;
 }
 
 // Return nonces
 public function getNonces()
 {
   $nonce = array($this->genNonce(10), $this->genNonce(10));
   return($nonce);
 }
 
 // Return javascript
 public function getJavaScript($nonce)
 {
   $string = "
/**
*
*  Secure Hash Algorithm (sha1)
*  http://www.webtoolkit.info/
*
**/

function shaen (msg)
{
 return msg;
};

function sha1 (msg) {

function rotate_left(n,s) {
 var t4 = ( n<<s ) | (n>>>(32-s));
 return t4;
};

function lsb_hex(val) {
 var str=\"\";
 var i;
 var vh;
 var vl;

 for( i=0; i<=6; i+=2 ) {
 	vh = (val>>>(i*4+4))&0x0f;
 	vl = (val>>>(i*4))&0x0f;
 	str += vh.toString(16) + vl.toString(16);
 }
 return str;
};

function cvt_hex(val) {
 var str=\"\";
 var i;
 var v;

 for( i=7; i>=0; i-- ) {
 	v = (val>>>(i*4))&0x0f;
 	str += v.toString(16);
 }
 return str;
};


function Utf8Encode(string) {
 string = string.replace(/\\r\\n/g,\"\\n\");
 var utftext = \"\";

 for (var n = 0; n < string.length; n++) {

 	var c = string.charCodeAt(n);

 	if (c < 128) {
   utftext += String.fromCharCode(c);
 	}
 	else if((c > 127) && (c < 2048)) {
   utftext += String.fromCharCode((c >> 6) | 192);
   utftext += String.fromCharCode((c & 63) | 128);
 	}
 	else {
   utftext += String.fromCharCode((c >> 12) | 224);
   utftext += String.fromCharCode(((c >> 6) & 63) | 128);
   utftext += String.fromCharCode((c & 63) | 128);
 	}

 }

 return utftext;
};

var blockstart;
var i, j;
var W = new Array(80);
var H0 = 0x67452301;
var H1 = 0xEFCDAB89;
var H2 = 0x98BADCFE;
var H3 = 0x10325476;
var H4 = 0xC3D2E1F0;
var A, B, C, D, E;
var temp;

msg = Utf8Encode(msg);

var msg_len = msg.length;

var word_array = new Array();
for( i=0; i<msg_len-3; i+=4 ) {
 j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
 msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
 word_array.push( j );
}

switch( msg_len % 4 ) {
 case 0:
 	i = 0x080000000;
 break;
 case 1:
 	i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
 break;

 case 2:
 	i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
 break;

 case 3:
 	i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8	| 0x80;
 break;
}

word_array.push( i );

while( (word_array.length % 16) != 14 ) word_array.push( 0 );

word_array.push( msg_len>>>29 );
word_array.push( (msg_len<<3)&0x0ffffffff );


for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {

 for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
 for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);

 A = H0;
 B = H1;
 C = H2;
 D = H3;
 E = H4;

 for( i= 0; i<=19; i++ ) {
 	temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
 	E = D;
 	D = C;
 	C = rotate_left(B,30);
 	B = A;
 	A = temp;
 }

 for( i=20; i<=39; i++ ) {
 	temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
 	E = D;
 	D = C;
 	C = rotate_left(B,30);
 	B = A;
 	A = temp;
 }

 for( i=40; i<=59; i++ ) {
 	temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
 	E = D;
 	D = C;
 	C = rotate_left(B,30);
 	B = A;
 	A = temp;
 }

 for( i=60; i<=79; i++ ) {
 	temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
 	E = D;
 	D = C;
 	C = rotate_left(B,30);
 	B = A;
 	A = temp;
 }

 H0 = (H0 + A) & 0x0ffffffff;
 H1 = (H1 + B) & 0x0ffffffff;
 H2 = (H2 + C) & 0x0ffffffff;
 H3 = (H3 + D) & 0x0ffffffff;
 H4 = (H4 + E) & 0x0ffffffff;

}

var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);

return temp.toLowerCase();

}

/**
*
* getCookie
*
**/

function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (\";\", offset);
      if (endstr == -1)
      endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
   }


function getCookie (name) {
   var arg = name + \"=\";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) {
   var j = i + alen;
       if (document.cookie.substring(i, j) == arg)
       return getCookieVal (j);
   i = document.cookie.indexOf(\" \", i) + 1;
       if (i == 0) break; 
       }

return null;
};

/**
*
* grimjoeys more secure login and session handeling js component
*
**/
function loginSubmit()
{
 // Cryptographically secure random values from server
 var nonce1 = \"".$nonce[0]."\";
 var nonce2 = \"".$nonce[1]."\";
 
 // Get password from form
 var password = document.loginForm.passwordIn.value;

 // Get seed
 var seed = password.substr(0, 6);

 // Add seed to password
 password = seed + password;

 // Notify wait
 alert(\"Login: Strengthening key... Might take a few seconds.\");

 // Key strengthening
 for (i = 0; i <= 1000; i++)
 {
   password = sha1(password);
 };

 // Set cookie key for further authentication
 document.cookie = \"SOLIDCRKEY=\" + escape(sha1(nonce1 + password));
      
 // Remove password from form
 document.loginForm.passwordIn.value = \"fuck off damn sniffer\";
       
 // Set hidden input to key value
 document.loginForm.password.value = sha1(nonce2 + password);
 document.loginForm.submit();
       
};

function updateKey(nonce)
{
 var skey = getCookie(\"SOLIDCRKEY\");
 if (skey != null)
 {
   document.cookie = \"SOFTCRKEY=\" + escape(sha1(nonce + skey));
 };
};

updateKey(\"".$nonce[0]."\");
";
   return($string);
 }
 
 // Return login form
 public function getLoginForm($nonce)
 {
   $string = "
<table>
<form name=\"loginForm\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<tr><td>Username:<td><input type=\"text\" name=\"username\" value=\"\">
<tr><td>Password:<td><input type=\"password\" name=\"passwordIn\" value=\"\">
<input type=\"hidden\" name=\"nonce1\" value=\"".$nonce[0]."\">
<input type=\"hidden\" name=\"nonce2\" value=\"".$nonce[1]."\"> 
<input type=\"hidden\" name=\"password\" value=\"\">
<tr><td colspan=\"2\"><input type=\"submit\" onClick=\"loginSubmit();\" name=\"submitLogin\" value=\"Login\">
</form>
</table>
";
   return($string);
 }
}

?>

index.php

Klikk for å se/fjerne innholdet nedenfor
<?php

require_once('classes/dbAuth.class.php');

$auth = new dbAuth;
$nonce = $auth->getNonces();

if(isset($_POST['username']))
{
 $username = $_POST['username'];
 $key = $_POST['password'];
 $pnonce1 = $_POST['nonce1'];
 $pnonce2 = $_POST['nonce2'];
 $auth->doAuth($username, $key, $pnonce1, $pnonce2, $_SERVER['REMOTE_ADDR']);
 header('Location: '.$_SERVER['PHP_SELF']);
} else {
 echo '
<html>
<head>
<title>login test
</title>
<script type=\'text/javascript\'>
'.$auth->getJavaScript($nonce).'
</script>
</head>
<body>
';
 if(isset($_COOKIE['SOFTCRKEY']))
 {
   if($auth->isAuth($_COOKIE['SOFTCRKEY'], $nonce[0], $_SERVER['REMOTE_ADDR']))
   {
     echo '
Authenticated.
';      
   } else {
     echo '
cookie set but not authenticated.
';
   }
 } else {  
     echo '
'.$auth->getLoginForm($nonce).'
';
 }
 echo '
</body>
</html>
';
}
?>

mkpass.php

Klikk for å se/fjerne innholdet nedenfor
<html>
<body>
<?php
if(!isset($_POST['submit']))
{
 echo "
<form action='' method='post'>
Passord:<input type='text' name='pass'><br>
<input type='submit' name='submit' value='Lag hash'>
";
} else {
 $pass = $_POST['pass'];
 $seed = substr($pass, 0, 6);
 $pass = $seed.$pass;
 for($i = 0; $i <= 1000; $i++)
 {
   $pass = sha1($pass);
 }
 echo "<tt>$pass</tt>";
}
?>
</body>
</html>

 

 

i dbBase.class.php finnes innstillinger for database tilkobling og i dbAuth.class.php stiller du inn prefix for tabellene.

 

krever:

 

CREATE table [prefix]User (

uid INT(6) NOT NULL PRIMARY KEY auto_increment,

username VARCHAR(20),

password VARCHAR(40),

nonce VARCHAR(10),

nonce_c VARCHAR(10),

ip VARCHAR(15));

 

INSERT INTO [prefix]User values(

null,

'ditt_brukernavn',

'passordhash_fra_mkpass.php',

'',

'',

'',);

 

mitt første forsøk på oo php så ikke ha for store forventninger. dette er ment å være en sikrere session håndtering en den som ligger i php som standard. denne benytter seg av challenge-response som gjør at den ikke kan hijackes. nøkkelen endrer seg for hver request.

 

veldig tidlig utgave, men det fungerer

 

edit: hmm. fant nettopp ut en alvårlig sårbarhet. ikke bruk denne umodifisert.

Endret av grimjoey
Lenke til kommentar

Hei

 

Dette scriptet vil jeg tro skal passe til det du ønsker:

 


<?php
ob_start();
session_start();

$password = sha1($_POST['password'];
$login_pass = sha1("passordet for å komme inn på siden");

if($password != $login_pass)
{
   header("Location: login.html");
   exit;
}

else
{
   $_SESSION['online'] = TRUE;
   header("Location: startside.php");
}

ob_end_flush();

?>

 

Så legger du dette øverst i alle filer du vil at folk må være innlogget for å kunne se:

 

<?php
ob_start();
session_start();

if($_SESSION['online'] != TRUE)
{
  header("Location: login.html");
  exit;
}

?>

//HTML her..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...