Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP] log in via url

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Kan er iemand mij op weg zetten hoe PHP-code aan te passen zodat het voor gebruikers mogelijk wordt in te loggen dmv het doorgeven van username / password in de URL. (Ik weet dat dit wat veiligheid betreft geen beste oplossing is)

  • kKaltUu
  • Registratie: April 2008
  • Laatst online: 16-11 20:57

kKaltUu

Profesionele Forumtroll

met GET, maar hoezo heb je dit niet kunnen vinden door een grote boze zoekmachine te gebruiken?

Bovenstaande is mijn post. Lees deze aandachtig, dank u wel voor uw medewerking.


  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
PHP:
1
2
3
4
5
6
7
8
if ($_GET['UserName'] == "gebruikersnaam" && $_GET['PassWord'] == "wachtwoord")
{
    echo "Yeey";
}
else
{
    echo "Fail";
}



Edit: kKaltUu was me voor.

[ Voor 9% gewijzigd door xh3adshotx op 16-03-2012 15:40 ]


  • Pmleader
  • Registratie: Februari 2012
  • Laatst online: 11-11 12:47
Dit kan vrij makkelijk door je POST te vervangen of aan te vullen met GET. je kan ook REQUEST gebruiken.

Edit: en er waren 2 mensen mij voor

[ Voor 15% gewijzigd door Pmleader op 16-03-2012 15:41 ]


  • SinergyX
  • Registratie: November 2001
  • Laatst online: 10:08

SinergyX

____(>^^(>0o)>____

Puur afhankelijk van het loginscript zelf, maar met de _GET functie kan je al een heel eind komen :P

Werk je met een @ user/pass voor de URL, kan je dat nog doen via parse_url functie.

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 24-11 16:17
[weg]

Bij nader inzien ga je maar lekker zelf zoeken in plaats van simpel te vragen. Zelfredzaamheid is een zegen!

[ Voor 89% gewijzigd door MuddyMagical op 16-03-2012 15:42 ]


  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
MuddyMagical schreef op vrijdag 16 maart 2012 @ 15:41:
URL: index.php?username=piet&password=wachtwoord

PHP:
1
2
3
4
5
6
7
8
9
$username = mysql_real_escape_string($_GET['username']);
$password = sha1($_GET['password']);

if( $username == 'piet' && $password == sha1('wachtwoord') ) {
echo('Ingelogd);

}else{
echo('Fail');
}
Misschien heeft het een goede reden, maar waarom real_escape je een GET variable als je niks met je database doe?

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 24-11 16:17
xh3adshotx schreef op vrijdag 16 maart 2012 @ 15:42:
[...]
Misschien heeft het een goede reden, maar waarom real_escape je een GET variable als je niks met je database doe?
Hmm, zo werk het verwijderen van mijn bericht niet. ;)

Maar dit is puur een if die checkt of de variabelen goed zijn ingevuld. De term 'Inloggen' is natuurlijk veel groter en daarvoor heb je toch echt een sessie of cookie nodig. Dus ik hoop dat de TS zelf ook nog wat inzet toont en de rest van de code zelf comleet maakt met een stukje database code, sessie beheer, cookie afhandeling, foutcontrole, etc...

[ Voor 7% gewijzigd door MuddyMagical op 16-03-2012 15:45 ]


  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
MuddyMagical schreef op vrijdag 16 maart 2012 @ 15:44:
[...]

Hmm, zo werk het verwijderen van mijn bericht niet. ;)

Maar dit is puur een if die checkt of de variabelen goed zijn ingevuld. De term 'Inloggen' is natuurlijk veel groter en daarvoor heb je toch echt een sessie of cookie nodig. Dus ik hoop dat de TS zelf ook nog wat inzet toont en de rest van de code zelf comleet maakt met een stukje database code, sessie beheer, cookie afhandeling, foutcontrole, etc...
Haha, ok. Nee, maar het was niet om jouw post af te zeiken maar ik dacht dat het misschien nog toegevoegde waarde had. Meer een vraag om misschien iets te leren. :)

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 10:08

SinergyX

____(>^^(>0o)>____

Als je buiten dit script natuurlijk wel gewoon mysql queries hebt lopen die je dan per ongeluk niet goed beveilig, kan je alsnog via deze get dingen op de database doen. Standaard beveiliging toepassen, dit geval kan het op een GET ook geen kwaad.

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 24-11 16:17
xh3adshotx schreef op vrijdag 16 maart 2012 @ 15:47:
[...]

Haha, ok. Nee, maar het was niet om jouw post af te zeiken maar ik dacht dat het misschien nog toegevoegde waarde had. Meer een vraag om misschien iets te leren. :)
Geen probleem. :)
Maar als je een goede start wilt en niet bang bent voor een uitdaging: crisp in "[PHP] BeveiligingsTips nodig"

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
@TS, waarom jou je dit willen doen? Als je je bezoekers wil laten inloggen vanuit een mailtje (voorbeeld) kan je ook een unieke key genereren waarmee men eenmaal kan inloggen.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-11 20:02

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op vrijdag 16 maart 2012 @ 15:36:
....(Ik weet dat dit wat veiligheid betreft geen beste oplossing is)
En toch ben ik ontzettend benieuwd waarom jij denkt dit nodig te hebben. In het kort kun je dit je gebruikers niet aan doen. Je gooit het wachtwoord te grabbel bij onderandere:
- browser historie
- tussenliggende proxies
- logs op de clients
- logs bij de server
- enz enz


Wat is de usecase die je aan het implementeren en waarom denk je dat het niet anders opgelost kan worden?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

SinergyX schreef op vrijdag 16 maart 2012 @ 15:49:
Als je buiten dit script natuurlijk wel gewoon mysql queries hebt lopen die je dan per ongeluk niet goed beveilig, kan je alsnog via deze get dingen op de database doen. Standaard beveiliging toepassen, dit geval kan het op een GET ook geen kwaad.
Nee, mysql_real_escape_string past wel de data aan. Dit gebeurd in zo'n vorm dat als je de data ophaalt lijkt alsof het niet gebeurd is. Als je mysql_real_escape_string gebruikt en je gebruikt daarna een if statement om die variabele te controleren heb je kans dat die if statement niet meer werkt, zie ook
PHP:
1
mysql_real_escape_string
.

Verder is het natuurlijk ook zo dat je netjes hoort te programmeren en dus weet waar je variabelen veilig zijn en wanneer niet. Bijvoorbeeld door overal de $_GET waarde gebruiken totdat je echt hem moet 'beveiligen' tegen sql injections e.d.
Ook kan je in plaats van escapen gewoon [google]prepared statements[/google] gebruiken, wat weer een heel stuk netter is.

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Verwijderd

Topicstarter
@TRON / Janoz:


Huidige situatie: frontend die vrij toegankelijk is + backend die enkel beschikbaar is na inloggen.

Nieuwe situatie: frontend in drupal waar gebruikers om bepaalde info te kunnen zien moeten inloggen + reeds bestaande backend (welke nog steeds login vereist)


Ik wil voorkomen dat gebruikers 2x moeten inloggen. Op de frontend staat een link naar de backend, als men daar op klikt zou men meteen ingelogd moeten zijn.

  • Alwinonline
  • Registratie: Mei 2009
  • Niet online
kan dat niet beter met een sessie? ik heb niet zoveel ervaring maar volgens mij moet dat kunnen

  • martijnve
  • Registratie: December 2004
  • Laatst online: 24-11 02:46
Kun je dat niet implementeren met een "formulier" met een submit-knop en twee hidden velden? Dat is nogsteeds slecht maar al een stuk beter.

Als je het helemaal goed doet maakt de server van het nieuwe systeem een sessie aan op het oude systeem, logt in, en speelt de gebruiker dan door naar de nieuwe server met de sessie-id. Op die manier heb je nooit ergens het wachtwoord in plain-tekst in de html staan.

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Verwijderd

Topicstarter
Alle info hieromtrent is welkom.

We zijn tevens van plan om een functie in onze software in te bouwen waardoor het mogelijk wordt dat deze licenties van de server ophaalt. Hiervoor zouden we gebruikers hun login / password laten invullen in de software en het programma in contact laten treden met de site.

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
De oplossing die jij oppert kan niet, aangezien je het wachtwoord van de gebruiker na het inloggen niet meer in plain-text weet...

Toch?

Heeft Drupal niet gewoon een API zodat je kan zorgen dat je maar 1 inlog systeem hebt.

[ Voor 24% gewijzigd door TJHeuvel op 16-03-2012 16:23 ]

Freelance Unity3D developer


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-11 20:02

Janoz

Moderator Devschuur®

!litemod

Heb je controle over de backend? Zorg dan dat je iets in bouwt waarbij de frontend de gebruiker over kan dragen naar de backend middels een token oid. Klinkt ingewikkeld, maar is heel simpel.

Om naar de backend te linken link je naar een specifieke url in de frontend. Deze genereert een token (gewoon een random string die maar lang genoeg is) en geeft door aan de backend dat gebruiker X zo met het gegenereerde token aan komt zetten. Vervolgens stuur je de gebruiker door naar de backend samen met dit token.

De backend hoeft het token maar even te onthouden (hoeft maar een paar seconden geldig te zijn) en hoeft alleen maar te onthouden welk token bij welke gebruiker hoort. Wanneer dan een gebruiker binnenkomt met dat token dan kun je die automatisch ingelogd laten zijn.

Dit werkt zolang je op 2 dingen kunt vertrouwen:
1 - de frontend weet wie de gebruiker is (dit is afgevangen doordat de gebruiker in de frontend ingelogd heeft)
2 - de communicatie tussen frontend en backend veilig is (Dit is makkelijk te ondervangen door bijvoorbeeld het accepteren van een token door de backend enkel toegankelijk te maken voor het IP van de frontend, of uberhaupt de communicatie te regelen via interne kanalen)

Maar het allerbelangrijkste lijkt me dat jullie eerst goed gaan nadenken over de consequenties van hetgeen jullie nu aan het implementeren zijn. Met een instelling als 'we weten dat het niet veilig is maar het werkt' en daarna 'he, met dit systeem kunnen we ook makkelijk licenties uitdelen' is de kans redelijk aanwezig dat jullie de volgende headline worden in yet another prive gegevens op straat liggend debacle.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 10-10 08:02
Heeft Drupal niet gewoon een API zodat je kan zorgen dat je maar 1 inlog systeem hebt.
Ja dat heeft drupal idd.. keyword is user_authenticate of user_external_login_register

De truuk is dat je er voor moet zorgen dat de drupal + ander CMS systeem een shared session object of iets dergelijks moeten krijgen ipv vieze URL constructies.

maar goed.. ik hoop dat het backend systeem niet een ander CMS is, want anders klinkt het wel als een redelijke vreemde situatie en zou ik eerder er voor kiezen om authenticatie in het andere systeem te bouwen, of alle CMS functies richting drupal verplaatsen.

Driving a cadillac in a fool's parade.


Verwijderd

Topicstarter
@Janoz : Met je onderste alinea kan ik jammer genoeg enkel maar akkoord mee gaan

Ga Googlen om meer info te vinden ivm het token-verhaal
Pagina: 1