Säkerhet

PHP

1 svar · 129 visningar · startad av oelbal

Medlem sedan jan. 20014 973 inlägg
Trådstart#1

Jag är mycket mån om säkerheten hos mitt adminsystem, men just säkerhetsfrågor är inte min starka sida.
Följande kod har jag använt för att kolla om användaren är, så att säga, en verklig användare:

login.PHP

<?
function CheckUsernameAndPassword($loginuser,$loginpass) {
	 include("secure/files/sensitive/databaseconnections.php");
         if (isset($loginuser) && isset($loginpass)) {
             $sqlquery = "SELECT id, nick FROM users WHERE name='$loginuser' AND pass=PASSWORD('$loginpass')";
             $res = mysql_query($sqlquery);
             $row = mysql_fetch_array($res);
             if (isset($row['id'])) {
                 session_start();
                 $uid = $row['id'];
                 $unick = $row['nick'];
                 session_register('uid');
                 session_register('unick');
                 Header("Location: secure/files/right.php");
             }
             else {
                 Header("Location: wrong.php");
             }
         }
}

if (isset($submit)) {
         CheckUsernameAndPassword($username,$password);
}
?>
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">
</head>

<body>

<form action="login.php" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br><br>
<input type="submit" value="Login" name="submit"></td>
</form>
                
</body>
</html>

right.PHP

<?
session_start();
if (!session_is_registered("uid") &#0124;&#0124; !session_is_registered("unick") &#0124;&#0124; !isset($uid) &#0124;&#0124; !isset($unick))
{
Header("Location: Någonstans");
}

?>
<html>
<head>
</head>

<body>

Det fungerade!

</body>
</html>

Hur kan man tänka sig att hackern går tillväga för att knäcka detta, och finns det några bra sätt att göra kontrollen utav användare säkrare?
ahhh, det kan finnas fel i koden eftersom jag skrev ihop den lite hastigt.... :)

Medlem sedan maj 20002 993 inlägg
#2

Du måste kontrollera lösenordet och användarnamnet på varje säker sida. tex om någon skriver "right.php?uid=x&unick=x" i adressen så kommer han ändå in på sidan.

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)