Hoofdletters in wachtwoord controleren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark Hogeveen

Mark Hogeveen

04/03/2013 15:17:52
Quote Anchor link
Hallo, ik heb een query om een login te controleren.
Dit is mijn query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT name,password FROM users WHERE name='test' AND password='wachtwoord'";

Als je nu een wachtwoord hebt waar hoofdletters in zitten, en je zou het invullen zonder hoofdletters en alleen kleine letters, dan kom je ook gewoon erin.
Hoe maak je dus een query hoofdlettergevoelig?
 
PHP hulp

PHP hulp

30/11/2021 04:17:20
 
- SanThe -

- SanThe -

04/03/2013 15:19:06
Quote Anchor link
Sla het password versleuteld op.
 
Kris Peeters

Kris Peeters

04/03/2013 15:24:19
Quote Anchor link
Jep.

bv. met md5() :
md5('Test') geeft een compleet ander resultaat dan md5('test')

En zo hoort het!

Ook met betere technieken gebeurt dit.
Jij zou nooit zomaar paswoorden in je BD mogen opslaan. Je slaat het gecodeerde paswoord op.
 
Ward van der Put
Moderator

Ward van der Put

04/03/2013 15:26:27
Quote Anchor link
En als je niets versleutelt (àls), dan kun je SELECT BINARY gebruiken in plaats van SELECT. Binair is de kleine letter 'a' namelijk ongelijk aan de hoofdletter 'A'.
 
Elwin - Fratsloos

Elwin - Fratsloos

04/03/2013 15:28:06
Quote Anchor link
Uhm.., nou kan het aan mij liggen, maar buiten het feit dat het wachtwoord gecodeerd opgeslagen zou moeten worden, is bovenstaande query toch al hoofdlettergevoelig? Er wordt immers een =-teken gebruikt. De vergelijking is toch alleen met het gebruik van 'LIKE' hoofdletterongevoelig?
Gewijzigd op 04/03/2013 15:28:42 door Elwin - Fratsloos
 
Ward van der Put
Moderator

Ward van der Put

04/03/2013 15:34:19
Quote Anchor link
Elwin - Fratsloos op 04/03/2013 15:28:06:
Uhm.., nou kan het aan mij liggen, maar buiten het feit dat het wachtwoord gecodeerd opgeslagen zou moeten worden, is bovenstaande query toch al hoofdlettergevoelig? Er wordt immers een =-teken gebruikt. De vergelijking is toch alleen met het gebruik van 'LIKE' hoofdletterongevoelig?
Dat hangt af van de collatie die is ingesteld voor het specifieke veld of de databasetabel. Als dat een CI-collatie voor Case Insensitive is, dan is een a gelijk aan een A.
 
Elwin - Fratsloos

Elwin - Fratsloos

04/03/2013 15:42:09
Quote Anchor link
Ward van der Put op 04/03/2013 15:34:19:
Dat hangt af van de collatie die is ingesteld voor het specifieke veld of de databasetabel. Als dat een CI-collatie voor Case Insensitive is, dan is een a gelijk aan een A.

Ah... Thx! :)
 

04/03/2013 16:20:16
Quote Anchor link
Wachtwoorden moeten voor de veiligheid altijd versleuteld opgeslagen worden. PHP heeft zelf enkele ingebouwde functies die kunnen helpen, ook ben je meteen van je probleem af.

Ook raad ik je aan om je applicatie te voorzien van een functie die bij het inloggen kijkt of de gebruiker niet teveel met het verkeerde wachtwoord heeft ingelogd. Als dat wel het geval is, is het het beste dat je het account blokkeert alsook het ip adres voor een bepaalde tijd.

Leesvoer
Wachtwoorden veilig opslaan met Bcrypt en Hmac
PHP Hmac functie

- edit - Leesbaarheid aangepast
Gewijzigd op 04/03/2013 16:29:45 door
 
Machiel K

Machiel K

04/03/2013 18:08:42
Quote Anchor link
Om het wachtwoord hoofdletter gevoelig te maken zet ik de Collation in de MySQL niet zoals hij dat automatisch op latin1_general_ci zet, maar op latin1_general_cs. Dat maakt het hoofdletter gevoelig.
Gewijzigd op 04/03/2013 18:09:21 door Machiel K
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.