Forum » Server-Side scripting » Session help
Berichten: 85
avatar
Offline Stuur privebericht
Halllo,

Ik ben bezig met een login systeem.Ik wil gebruikers niet opnieuw laten inloggen, en de handigste en veiligste manier hiervoor is $_SESSION, denk ik. Iedereen keer als ik de site herlaad zou ik dus nog ingelogd moeten zijn, maar helaas ben ik dan weer uitgelogd. Kan iemand mij helpen?

Dit is mijn script:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
ignore_user_abort 
=== FALSE;
include(
'config.php');
$password1 htmlspecialchars($_POST['password'], ENT_QUOTES); // Encrypt wachtwoord.
$password sha1(md5(hash('sha512',$password1)));
$username htmlspecialchars($_POST['username'], ENT_QUOTES); // Gebruikt html specialchars om XSS exploit te voorkomen.
if (isset($_POST['login']) && $username !="" && $password != ""){
$controleer mysql_query("SELECT * FROM `users` WHERE `username`='".mysql_real_escape_string($username)."' AND `password`='".mysql_real_escape_string($password)."' AND `admin`='1'") or die (mysql_error());
$admin mysql_num_rows($controleer);
if (
$admin == 1){
session_start();
session_regenerate_id (true); //Voorkomt session fixed attacks. 
$_SESSION['usr_name'] = $username
$naam mysql_fetch_object($controleer);
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Crystal ACP</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
  <div class="blok_header">
    <div class="header">
      <div class="logo"> <a href="index.html"><img src="images/logo.gif" width="349" height="98" border="0" alt="logo" class="one" /></a> </div>
      <div class="galeria">
        <p><a href="#" class="thre"><img src="images/spacer.gif" alt="pisture" width="24" height="23" border="0" /></a> <a href="#" class="sek"><img src="images/spacer.gif" alt="pisture" width="24" height="23" border="0" /></a> <a href="#" class="first"><img src="images/spacer.gif" alt="pisture" width="24" height="23" border="0" /></a> </p>
      </div>
    </div>
    <div class="clr"></div>
  </div>
  <?php
   
if (!isset($_SESSION['usr_name'])){ ?>
  <div class="menu_resize_bg">
    <div class="menu_resize">
      <div class="menu">
        <ul>
          <li><a href="index.php"><span>User login</span></a></li>
          <li><a href="show.html"><span>Features</span></a></li>
        </ul>
      </div>
      <div class="clr"></div>
  <div class="body_resize">
    <div class="body">
<center>
<form method="post">
<b>This page is for Crystal Administrators only</b>
<br>
Username:<input type="textbox" name="username">
<br>
Password:<input type="password" name="password">
<br>
<input type="submit" value="login" name="login">
</div>
      <div class="clr"></div>
    </div>
    <div class="clr"></div>
  </div>
<? }
elseif (isset(
$_SESSION['usr_name'])){ 
?>
<div class="menu_resize_bg">
    <div class="menu_resize">
      <div class="menu">
        <ul>
          <li><a href="admin.php" class="active"><span>Users</span></a></li>
          <li><a href="serial.php"><span>Creat serial</span></a></li>
        </ul>
      </div>
      <div class="clr"></div>
  <div class="body_resize">
    <div class="body">
    <form method="post">
<center>Welcome <?echo $_SESSION['usr_name'];?></center>
<table width="100%" cellspacing="2" cellpadding="2">
            <tr><td>Username:</td><td>Serial:</td></tr>
            <?php
$userstel 
mysql_query("SELECT * FROM `users`");
while(
$userstellen mysql_fetch_object($userstel)){ ?>
            <tr>
            <td><?if ($userstellen->admin >0){echo "<font color=red>";} echo $userstellen->username;if($userstellen->admin >0){echo "</font>";}?></td>
            <td><? echo $userstellen->serial;?></td>
            </tr>
            <? }?>
        </table>
          
        </table>            
<? ?>

23-01-2012 12:50
Dit topic is 204 keer bekeken door 38 verschillende leden
Reacties op: "Session help"
1
Berichten: 552
avatar
Offline Stuur privébericht
session_start(); moet helemaal boven aan. Denk dat het dan wel doet.
23-01-2012 12:55
Berichten: 85
avatar
Offline Stuur privébericht
Quote: FrankY

session_start(); moet helemaal boven aan. Denk dat het dan wel doet.


Ik wil dat hij alleen de session start als de gebruiker is gevonden met de opgegeven username en password.

Als ik hem helemaal boven aan zet krijg ik deze error:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
23-01-2012 13:00
Informatica Student
Berichten: 1406
avatar
Online Stuur privébericht
Google?

Verder is cookie net zo veilig als Session...
Wist je dat aan een session een cookie zit vastgeplakt?
23-01-2012 13:51
Berichten: 85
avatar
Offline Stuur privébericht
Quote: BrokenTrack

Google?

Verder is cookie net zo veilig als Session...
Wist je dat aan een session een cookie zit vastgeplakt?


Heb ik al geprobeerd, maar helaas niks kunnen vinden. Ohh, op internet dacht ik te lezen dat $_SESSION veiliger is.

Nieuwe reactie samengevoegd met originele reactie op 23.01.12 14:39:36:
Heb het ondertussen al gefixt. Bedankt.
23-01-2012 13:56
Berichten: 470
avatar
Offline Stuur privébericht
@BrokenTrack

Session is toch echt veiliger, maar je hebt wel gelijk dat de client dan een cookie krijgt daarvan.

Dit is echter niets meer dan een 32 tekens lange cijfer/letter combinatie.
En die kraak je niet zomaar (Al helemaal niet als je ook nog een $_SESSION['ip'] aanmaakt met daarin het IP van de inlog, die gelijk moet zijn bij bepaalde handelingen)

Terwijl een $_COOKIE zo is aangepast.

Een inlog met een $_SESSION['usr_name'] zoals in voorbeeld kun je niet zomaar even de naam aanpassen.
Terwijl dat bij $_COOKIE['usr_name'] in enkele seconden is gedaan.

Maar ontopic: Fijn dat je eruit bent gekomen.
Wat was precies het probleem, misschien zijn er meer mensen met een soortgelijk probleem.
23-01-2012 19:09
Informatica Student
Berichten: 1406
avatar
Online Stuur privébericht
Session is aanpasbaar. Cookie is aanpasbaar.

Oftewel, beveilig gewoon de waardes Dan maakt het niet meer uit wat je doet qua beveiliging.

Het klopt dat je het niet 'even' doet bij een session. Maar uiteindelijk komt het wel op hetzelfde neer.
23-01-2012 19:13
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Koppel een extra cookie aan je sessie.
Sign je cookies: http://kohanaframework.org/3.2/guide/api/Cookie#set
Gebruik bcrypt + hmac: http://www.criminalspoint.com/db/script/697/bcrypt-hmac-password-hash.html
Pas de locatie van sessies aan als je op een shared server zit.
Die hash van jou is zo veilig als een MD5 hash, zo niet minder veilig. Zwakste schakel en alles.

*hoopt dat het interwebz me dit nu eindelijk laat posten en ik het niet nog een keer opnieuw hoef te typen*
23-01-2012 23:51
Reageer op: "Session help"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden