PHP & MYSQL beginner

Status
Niet open voor verdere reacties.

feint

Gebruiker
Lid geworden
3 jun 2008
Berichten
273
Hallo allemaal,

Ik zou graag meer willen leren over PHP en MYSQL. Ik ben een tijdje bezig geweest met het uitzoeken wat het allemaal doet en heb daarmee een eenvoudig contactformulier in elkaar gezet.

Nu zou ik graag willen proberen om een login script te maken. Nu is het op zich niet zo moeilijk om de login functie te maken, maar alles wat erbij hoort wel en ik weet niet zo goed waar ik moet beginnen.

Mijn grootste zorg is de beveiliging op de login. Ik heb op internet eens rondgekeken naar script waar ik uit kon kijken hoe het ongeveer moest maar ze zijn bijna allemaal verouderd of zodanig geschreven dat het voor een beginner redelijk moeilijk te volgen is.

Hebben jullie misschien tips naar wat jij zeker in een login script zou verwerken als het aankomt op beveiliging (dingen als gebruik jij Salt of welke hash etc).

En of jullie misschien eventuele boeken of websites waar ik de nodige informatie kan vinden.

Heb al rondgekeken op verschillende websites maar ik begin te denken dat ik niet de juiste dingen aan het zoeken ben.

Alvast bedankt voor de hulp.
 
Ik was er een tijdje geleden ook naar aan het kijken en toen kwam ik op deze:
http://www.sitemasters.be/scripts/1/4/85/PHP/loginscript_mbv_sessies_v1.2
Gebruik alsjeblieft niet dit script; die post is uit 2004. De code is (mede) daarom ook erg verouderd en onveilig.


Er zijn hier al verscheidene topics geplaatst over veiligheid binnen php.
Ik leg in dit topic al het een en ander uit over de beveiliging van sessies.

Betreffende de hash; kijk maar naar de crypt() functie, en vooral het blowfish gedeelte.

Liefst de database gebruiken met prepared queries van pdo.
 
bedankt voor de replies, ik zal eens erna kijken.
 
Gebruik alsjeblieft niet dit script; die post is uit 2004. De code is (mede) daarom ook erg verouderd en onveilig.

Maar (ik vind) dat het daar goed uitgelegd wordt, en dan kan het toch handig zijn....

En ik heb ook een site, maar ik denk niet dat iemand de behoefte heeft om daarvan een account te gebruiken, dus het hangt er ook van af waarvoor je het gebruikt. Als je het voor iets kleins gebruikt, hoeft het misschien niet eens zo heel goed beveiligd te zijn.

Maar misschien moet ik zelf inderdaad ook iets anders verzinnen.:p
 
Ik ben bij het zoeken naar de crypt blowfish functie het volgende topic tegengekomen:
http://www.openwall.com/articles/PHP-Users-Passwords
Zover ik heb gelezen vind ik het een redelijk goed topic en maakt ook gebruik van crypt blowfish en legt daarna redelijk duidelijk uit wat en waarom je bepaalde beveiliging methodes gebruikt.

Misschien handig voor andere, tenzij iemand zegt dat wat hier getypt wordt allemaal onzin is natuurlijk :D
 
Ik ben nu een tijdje aan het rommelen met PHP en ben nu bezig met een connectie te maken naar een mysql db met gebruik van prepared statement.
Nu heb ik het volgende stukje code opgezet met behulp van het boek php solutions: dynamic webdesign made easy en daar maken ze gebruik van prepared statements in hun verbinding.

Nu is mijn vraag of ik deze gegevens nog moet escapen my mysql_real_escape_string, of dat dit automatisch wordt opgevangen?

het betrekt zich om deze code

PHP:
// set connection info
include('./include/connection.php');
// set connection type to read
$conn = dbConnect('read');
// get the username's details from the database
$sql = 'SELECT something FROM somethingelse WHERE something = ?';
// initialize connection
$stmt = $conn->stmt_init();
// include the functions .:PassHash:.
require("./include/functions.php");
// hash the password
$pass_hash = PassHash::hash($something);
// prepare the query, if it fails it returns false
$stmt->prepare($sql);
// bind the input parameter s=string, i=int, d=double float, b=binary
$stmt->bind_param('s', $something);
// bind the result, using a new variable for the password
$stmt->bind_result($somethingstored);
$stmt->execute();
 if ($stmt->affected_rows == 1) {
	$success = "$something has been found. ";
  } elseif ($stmt->errno == 1062) {
	$errors[] = "$something is not found. Try something else please.";
  } else {
	$errors[] = 'Sorry, there was a problem with the database.';
  }

Ik heb rondgekeken, en in het hele boek gebruiken ze nergens escapes. Nu heb ik op internet gezocht en sommigen zeggen wel, andere zeggen van niet. (boek is van 6/2010, dus redelijk van de tijd)

$something zijn plaatsvervangers :)
 
Laatst bewerkt:
Met echte prepared statements (sommige drivers emuleren het ook) wordt eerst de query naar de database gestuurd. Daarna worden pas de waardes gestuurd.
Als gevolg hoef je de waardes niet meer zelf te escapen. Ander voordeel is ook dat het sneller gaat wanneer je dezelfde query achter elkaar moet uitvoeren met andere waardes.

Kijk trouwens nog even naar pdo, werkt een stuk beter en fijner dan mysqli.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan