Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ongelma

Lol-z [03.01.2006 13:01:55]

#

Asensin tässä pari päivää sitten XP:lle Apache 2 serverin ja siihen PHP 4. Kopsasin mun toiselta sivulta salasana suojauksen PHP (aika heikko, mutta hyvä). Mutta sitten kun laitoin sen mun palvelimelle niin se ei suostunut toimimaan vaan väitti että olis väärä käyttäjä ja salasana, mutta se kyllä toimi sillä mu toisella sivulla hyvin http://www.info.tampere.fi/~ypymseko/login.php
Käyttäjä: Testi
Salasana: test

***salasana.php
<?php

$username = $_GET["user"];
$pass = $_GET["pass"];

if
 ($pass == md5("test") && $user == "Testi");
else
  header("Location: virhe.html");

?>
***login.php
<?php

if (isset($_POST["user"]) && isset($_POST["pass"])) {
  header("Location: salainensivu.php?user=".$_POST["user"].
    "&pass=". md5($_POST["pass"]));
}
?>
<html>
<head>
  <title>Kirjautuminen</title>
</head>
<br>
<center><form method="post" action="login.php">
  <b>User:</b> <input name="user" type="text"><br>
  <b>Pass:</b> <input name="pass" type="password"><br>
  <br>
  <input type="submit" value="Login">
</form></center>
</html>
***salainensivu.php
<?php include("salasana.php"); ?>
<html>
<head>
<title>Salainen sivu</title>
</head>
<body>
T&auml;m&auml; sivu on vain harvoille valituillle ihmisille
</body>
</html>

Olisiko siinä mun koodis jotain vikaa vai mun serverissä?

KeKimmo [03.01.2006 13:43:10]

#

Kannattaisi nyt ensinnäkin ottaa huomioon, että tuo ei oikeasti suojaa mitään. Tuohan siis ilmeisesti asettaa itse salatulle sivulle location-headerin, joka komentaa käyttäjän selainta menemään muualle. Selaimenhan ei luonnollisesti mikään pakko totella tätä käskyä, jolloin sivu jää näkyviin normaalisti.

exAtuu [03.01.2006 13:47:42]

#

Varsinainen virhe löytyy salasana.php:stä. Vertaat muuttujaa $user, vaikka sitä ei koskaan ole edes määritetty. Tarkoittanet tuolla muuttujalla siis $username:a, jonka oletkin määrittänyt.

Metabolix [03.01.2006 14:43:16]

#

KeKimmon mainitsemaan ongelmaan auttaa, että headerin jälkeen tulee exit;

Deewiant [03.01.2006 15:27:14]

#

MasaVista kirjoitti:

Varsinainen virhe löytyy salasana.php:stä. Vertaat muuttujaa $user, vaikka sitä ei koskaan ole edes määritetty.

Ja tämä ei haitannut vanhalla servulla todennäköisimmin sen takia, että siellä oli register_globals asetettu päälle. Täten tuo $user tarkoitti samaa kuin $_GET["user"].

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta