Dubbel inloggen blokkeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software ontwikkelaar ASP .Net / C#

Functie omschrijving Gezocht! Software ontwikkelaar. Ben jij bekend met termen als ASP .Net, C# en SQL? Ben jij op zoek naar een afwisselende en uitdagende IT-functie binnen de agrarische sector? En omschrijf jij jezelf als zelfstandig, enthousiast en proactief? Dan hebben wij de perfecte functie voor jou! Als Software ontwikkelaar binnen deze organisatie ben je samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Je gaat hierbij bijdragen aan de vertaling van klantwensen naar effectieve softwareoplossingen. Verder bestaan je werkzaamheden uit: Technische uitwerking van de business

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

PHP developer (Symfony, Doctrine)

Functie Als PHP developer wordt er een hoge mate van zelfstandigheid verwacht, maar ook dat je goed opereert in een team waar kennis wordt gedeeld en dingen als codereviews erg veel voorkomen. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden

Bekijk vacature »

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Front end developer React

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar een ontwikkelaar ter versterking van het huidige developers team. Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

Pagina: 1 2 volgende »

30/03/2015 18:40:40
Quote Anchor link
Jasper Schellekens op 30/03/2015 18:04:40:
Beste scripters!

Ik ben beginnend met PHP.
Ik wil dus op mijn website een blokkade maken voor dubbel login.

Hoe wil ik dit doen?
In de tabel users heb ik online en online2.
online registreert wanneer de klant inlogt( tijdstip datum etc.)
Bij online2 komt na het inloggen inplaats van nee, ja te staan.

Op het moment dat een klant inlogt op mijn website verandert dit.
Nu wil ik zorgen dat de klant niet met een tweede scherm kan inloggen (dubbel login)

Hoe maak ik bij het inloggen iets dat controleert of online2 op ja of nee staat?
Staat die op ja? dan wil ik de foutmelding 'u bent al ingelogd' laten zien.
Staat er nee? dan kan er ingelogd worden.

Hoe kan ik dit doen?

De bestanden mocht het nodig zijn:

login.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php /* ------------------------- */
  include("config.php");
  if(isset($_POST['login'])) {
 $dbres                = mysql_query("SELECT * FROM `users` WHERE `login`='{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");
$num = mysql_num_rows($dbres);
    if($num > 0) {
$naam = $_POST['login'];
$_POST['login'] = $naam;
$pass = $_POST['pass'];
$_POST['pass'] = $pass;
    setcookie("login",'',time()-24*60*60,"/","");
    setcookie("validate",'',time()-24*60*60,"/","");
      $_SESSION['IP']            = $_SERVER['REMOTE_ADDR'];
      $dbres                = mysql_query("SELECT *,UNIX_TIMESTAMP(`signup`) AS `signup` FROM `users` WHERE `login`='{$_SESSION['login']}'");
      $_SESSION['data']            = mysql_fetch_object($dbres);
if($data->vakantie > 0){
   header("Location: $sitelink/index.php?vakantie");
exit;
    }

    header("Location: inlogger.php?x={$_POST['login']}&pass={$_POST['pass']}");
    }

else{
   header("Location: $sitelink/index.php?error");
   }
  }

  else if($_GET['x'] == "logout") {
    mysql_query("UPDATE `[users]` SET `online`='0000-00-00 00:00:00' WHERE `login`='{$data->login}'");
    mysql_query("DELETE FROM `[online]` WHERE `login`='{$_COOKIE['login']}' AND `validate`='{$_COOKIE['validate']}' AND `IP`='{$_SERVER['REMOTE_ADDR']}'");
    setcookie("login",'',time()-24*60*60,"/","");
    setcookie("validate",'',time()-24*60*60,"/","");
    session_destroy();
   header("Location: $sitelink/index.php");
  }

/* ------------------------- */ ?>



inlogger.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  include("config.php");
$user1 = mysql_query("SELECT * FROM `users` WHERE `activationcode`='0' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
$user = mysql_num_rows($user1);
if($user > 0){
$_SESSION['login'] = $_GET['x'];
$data->login = $_GET['x'];
header("Location: index.php?a=loggedin");
}

else{
header("Location: $sitelink/index.php?error");
}

?>


loggedin.php
<table width="100%">
<tr>
<td align="center">
<br><br><br><br>
<table class="div_popup" align="center">
<tr>
<td>
Je bent ingelogd in het systeem en zal over enkele ogenblikken door worden gestuurd. </td>
</tr>
<tr>
<td>
<br><br>
<a href="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $sitelink;?>
/v3/index.php?a=news" class="msg_ok">Klik hier indien je niet automatisch verder gaat.</a>
</td>
</tr>
</table>
</td>
</tr>
</table>

<script language="javascript">
setTimeout("document.location.href='
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $sitelink;?>
/v3/index.php?a=news'",(1000*2));
</script>
</div>
</td>
</tr>

</table>
</td>

Alvast bedankt!

Toevoeging op 30/03/2015 18:08:41:

Kleine edit: De foutmelding is niet nodig die zit er al bij.
Hij moet alleen het dubbel inloggen blokkeren


Toevoeging op 30/03/2015 18:42:12:

Jasper Schellekens op 30/03/2015 18:40:40:
Jasper Schellekens op 30/03/2015 18:04:40:
Beste scripters!

Ik ben beginnend met PHP.
Ik wil dus op mijn website een blokkade maken voor dubbel login.

Hoe wil ik dit doen?
In de tabel users heb ik online en online2.
online registreert wanneer de klant inlogt( tijdstip datum etc.)
Bij online2 komt na het inloggen inplaats van nee, ja te staan.

Op het moment dat een klant inlogt op mijn website verandert dit.
Nu wil ik zorgen dat de klant niet met een tweede scherm kan inloggen (dubbel login)

Hoe maak ik bij het inloggen iets dat controleert of online2 op ja of nee staat?
Staat die op ja? dan wil ik de foutmelding 'u bent al ingelogd' laten zien.
Staat er nee? dan kan er ingelogd worden.

Hoe kan ik dit doen?

Ik heb het hiermee geprobeert maar helaas werkte dit niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  include("config.php");
$user1 = mysql_query("SELECT * FROM `users` WHERE `online2`='nee' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
$user = mysql_num_rows($user1);
if($user > 0){
$_SESSION['login'] = $_GET['x'];
$data->login = $_GET['x'];
header("Location: index.php?a=loggedin");
}

else{
header("Location: $sitelink/index.php?error");
}

?>



De bestanden mocht het nodig zijn:

login.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php /* ------------------------- */
  include("config.php");
  if(isset($_POST['login'])) {
 $dbres                = mysql_query("SELECT * FROM `users` WHERE `login`='{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");
$num = mysql_num_rows($dbres);
    if($num > 0) {
$naam = $_POST['login'];
$_POST['login'] = $naam;
$pass = $_POST['pass'];
$_POST['pass'] = $pass;
    setcookie("login",'',time()-24*60*60,"/","");
    setcookie("validate",'',time()-24*60*60,"/","");
      $_SESSION['IP']            = $_SERVER['REMOTE_ADDR'];
      $dbres                = mysql_query("SELECT *,UNIX_TIMESTAMP(`signup`) AS `signup` FROM `users` WHERE `login`='{$_SESSION['login']}'");
      $_SESSION['data']            = mysql_fetch_object($dbres);
if($data->vakantie > 0){
   header("Location: $sitelink/index.php?vakantie");
exit;
    }

    header("Location: inlogger.php?x={$_POST['login']}&pass={$_POST['pass']}");
    }

else{
   header("Location: $sitelink/index.php?error");
   }
  }

  else if($_GET['x'] == "logout") {
    mysql_query("UPDATE `[users]` SET `online`='0000-00-00 00:00:00' WHERE `login`='{$data->login}'");
    mysql_query("DELETE FROM `[online]` WHERE `login`='{$_COOKIE['login']}' AND `validate`='{$_COOKIE['validate']}' AND `IP`='{$_SERVER['REMOTE_ADDR']}'");
    setcookie("login",'',time()-24*60*60,"/","");
    setcookie("validate",'',time()-24*60*60,"/","");
    session_destroy();
   header("Location: $sitelink/index.php");
  }

/* ------------------------- */ ?>



inlogger.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  include("config.php");
$user1 = mysql_query("SELECT * FROM `users` WHERE `activationcode`='0' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
$user = mysql_num_rows($user1);
if($user > 0){
$_SESSION['login'] = $_GET['x'];
$data->login = $_GET['x'];
header("Location: index.php?a=loggedin");
}

else{
header("Location: $sitelink/index.php?error");
}

?>


loggedin.php
<table width="100%">
<tr>
<td align="center">
<br><br><br><br>
<table class="div_popup" align="center">
<tr>
<td>
Je bent ingelogd in het systeem en zal over enkele ogenblikken door worden gestuurd. </td>
</tr>
<tr>
<td>
<br><br>
<a href="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $sitelink;?>
/v3/index.php?a=news" class="msg_ok">Klik hier indien je niet automatisch verder gaat.</a>
</td>
</tr>
</table>
</td>
</tr>
</table>

<script language="javascript">
setTimeout("document.location.href='
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $sitelink;?>
/v3/index.php?a=news'",(1000*2));
</script>
</div>
</td>
</tr>

</table>
</td>

Alvast bedankt!

Toevoeging op 30/03/2015 18:08:41:

Kleine edit: De foutmelding is niet nodig die zit er al bij.
Hij moet alleen het dubbel inloggen blokkeren
 
PHP hulp

PHP hulp

19/04/2024 06:26:58
 
- Ariën  -
Beheerder

- Ariën -

30/03/2015 19:19:25
Quote Anchor link
Je zou aan de hand van het IP bij kunnen houden of iemand ingelogd is, maar dat heeft meer nadelen op school en bedrijfsnetwerken waar een IP gedeeld wordt. Ik zou eigenlijk ook geen reden zien waarom je niet dubbel ingelogd mag zijn.

Verder als ik dit script zie dan schrik ik behoorlijk en raad ik met klem aan deze direct te verwijderen als je dit publiekelijk hebt staan, de fouten zijn aanzienlijk:

- Vreemde tabelnaamgeving,w at is nou het verschil tussen online1 en online2?
- Wachtwoorden via een GET-request meegeven (!!!!!!!) (iedereen kan het wachtwoord zo achterhalen)
- SQL-injection is mogelijk, dus je bent snel gehacked.
- Er mist goede foutafhandeling op je query
- Onnodige [ ] in je tabelnamen (Ik zie het nut daar nog steeds niet van) en onnodige backticks (`).

Mijn advies: Haal het direct offline, en bouw een degelijk goed systeem aan de hand van een goede recente PHP-cursus. Dit script is zo lek als een zeef!
Gewijzigd op 30/03/2015 19:21:29 door - Ariën -
 

30/03/2015 19:36:02
Quote Anchor link
Aar C op 30/03/2015 19:19:25:
Je zou aan de hand van het IP bij kunnen houden of iemand ingelogd is, maar dat heeft meer nadelen op school en bedrijfsnetwerken waar een IP gedeeld wordt. Ik zou eigenlijk ook geen reden zien waarom je niet dubbel ingelogd mag zijn.

Verder als ik dit script zie dan schrik ik behoorlijk en raad ik met klem aan deze direct te verwijderen als je dit publiekelijk hebt staan, de fouten zijn aanzienlijk:

- Vreemde tabelnaamgeving,w at is nou het verschil tussen online1 en online2?
- Wachtwoorden via een GET-request meegeven (!!!!!!!) (iedereen kan het wachtwoord zo achterhalen)
- SQL-injection is mogelijk, dus je bent snel gehacked.
- Er mist goede foutafhandeling op je query
- Onnodige [ ] in je tabelnamen (Ik zie het nut daar nog steeds niet van) en onnodige backticks (`).

Mijn advies: Haal het direct offline, en bouw een degelijk goed systeem aan de hand van een goede recente PHP-cursus. Dit script is zo lek als een zeef!


Het gaat hier om een rpg spel.
Het nadeel is dat spelers een gat hebben gevonden om zeg maar te hacken.
Als ze dubbel inloggen en snel klikken dan krijgen ze het 2/3 misschien zelfs 10 keer voor de prijs van 1.

Het verschil tussen online en online2?
Online registreert hoelaat de gebruiker online is geweest.
Online2 verandert na het inloggen de waarde van nee naar ja.

Zoals ik al zei ben ik beginnend met PHP, dat is de reden dat je hier van schrikt denk ik.
Toch wil ik hiermee doorgaan.

Dubbel inloggen blokkeren via een ip-adres wordt hem niet.
Het zou moeten werken via de waarde nee, of ja.
maar hoe?

bedankt voor je reactie.

mvg
 
- Ariën  -
Beheerder

- Ariën -

30/03/2015 19:39:06
Quote Anchor link
Omdat het al te hacken is, maakt het al zorgelijk om te draaien. Niet alleen voor je eigen, maar ook andere klanten op de server bij je hosting kunnen de dupe worden met inferieure scripts.

Maar je kan de manier van het klikken toch aanpakken? Denk aan 1 maal klikken per 30 seconden.

Ik zou eerst in ieder geval met een schone lei beginnen, als ik jouw was.
 

30/03/2015 19:39:32
Quote Anchor link
Jasper Schellekens op 30/03/2015 19:36:02:
Aar C op 30/03/2015 19:19:25:
Je zou aan de hand van het IP bij kunnen houden of iemand ingelogd is, maar dat heeft meer nadelen op school en bedrijfsnetwerken waar een IP gedeeld wordt. Ik zou eigenlijk ook geen reden zien waarom je niet dubbel ingelogd mag zijn.

Verder als ik dit script zie dan schrik ik behoorlijk en raad ik met klem aan deze direct te verwijderen als je dit publiekelijk hebt staan, de fouten zijn aanzienlijk:

- Vreemde tabelnaamgeving,w at is nou het verschil tussen online1 en online2?
- Wachtwoorden via een GET-request meegeven (!!!!!!!) (iedereen kan het wachtwoord zo achterhalen)
- SQL-injection is mogelijk, dus je bent snel gehacked.
- Er mist goede foutafhandeling op je query
- Onnodige [ ] in je tabelnamen (Ik zie het nut daar nog steeds niet van) en onnodige backticks (`).

Mijn advies: Haal het direct offline, en bouw een degelijk goed systeem aan de hand van een goede recente PHP-cursus. Dit script is zo lek als een zeef!


EDIT: Het is niet mogelijk om het wachtwoord te achterhalen. De gegevens staan misschien wel in de URL maar het word geforward. Als je dit wachtwoord kunt achterhalen dan ben je een goeie.

Het gaat hier om een rpg spel.
Het nadeel is dat spelers een gat hebben gevonden om zeg maar te hacken.
Als ze dubbel inloggen en snel klikken dan krijgen ze het 2/3 misschien zelfs 10 keer voor de prijs van 1.

Het verschil tussen online en online2?
Online registreert hoelaat de gebruiker online is geweest.
Online2 verandert na het inloggen de waarde van nee naar ja.

Zoals ik al zei ben ik beginnend met PHP, dat is de reden dat je hier van schrikt denk ik.
Toch wil ik hiermee doorgaan.

Dubbel inloggen blokkeren via een ip-adres wordt hem niet.
Het zou moeten werken via de waarde nee, of ja.
maar hoe?

bedankt voor je reactie.

mvg

 
- Ariën  -
Beheerder

- Ariën -

30/03/2015 19:41:15
Quote Anchor link
Je hoeft niet steeds het laatste bericht quoten, je kan onderaan het topic ook je bericht invullen.
Dat houdt de boel beter leesbaarder.
 

30/03/2015 19:43:54
Quote Anchor link
Ik host alles via appserv, maak geen gebruik van hosting.
Toch wel eigenlijk mijn eigen risico.

Maar dan nog, ook al is het een onstabiel script.
Hoe gebruik ik online2 in de database om dubbel login te blokken, en hoezo werkt dit dan niet?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  include("config.php");
$user1 = mysql_query("SELECT * FROM `users` WHERE `online2`='nee' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
$user = mysql_num_rows($user1);
if($user > 0){
$_SESSION['login'] = $_GET['x'];
$data->login = $_GET['x'];
header("Location: index.php?a=loggedin");
}

else{
header("Location: $sitelink/index.php?error");
}

?>
 
- Ariën  -
Beheerder

- Ariën -

30/03/2015 19:48:44
Quote Anchor link
Ik gok de database-structuur. Als je wilt weten of er geklikt is voor een bepaalde actie, sla dan de datum en tijd op in de database in een tabel 'voted' met daarbij het ID en de actie waarvoor er geklikt is, en vergelijk die met de huidige datum en tijd. Als deze langer dan een minuut geleden heeft plaatsgevonden, verwijder deze dan, en toon anders een foutmelding. Kan prima in een enkele tabel.

Als ik het script zo zie is het een zeer slechte scriptstijl van 12(!!!) jaar geleden.
Ik raad daarom aan om gewoon met een schone lei te beginnen in plaats van dat je met een in-plakband-aan-elkaar-hangend script verder gaat stoeien waarbij je script onveiliger wordt en zelfs onsamenhangender.
Oh ja, md5() is behoorlijk achterhaald, bcrypt is daarentegen een stuk veiliger.
Verder is niet alleen je server een gevaar, maar ook de gebruiker, doordat passworden open en bloot in hun geschiedenis staan (!!!!)

Met deze stappen zul je geheid een beter resultaat krijgen:
Stap 1: PHP beginnershandleiding
Stap 2: SQL beginnershandleiding
Stap 3: Datum- en Tijdfuncties in MySQL
Stap 4 : MySQLi - Een nieuwe manier van interactie tussen PHP en MySQL
Gewijzigd op 30/03/2015 19:52:17 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

30/03/2015 19:56:15
Quote Anchor link
Quote:
Het gaat hier om een rpg spel.
Het nadeel is dat spelers een gat hebben gevonden om zeg maar te hacken.
Als ze dubbel inloggen en snel klikken dan krijgen ze het 2/3 misschien zelfs 10 keer voor de prijs van 1.

Wat betekent dit laatste deel?

Serieus, orden je gedachten.

Als je dit soort zaken wilt afvangen door middel van een dubbele login dan vermoed ik dat dit de verkeerde oplossing is voor het probleem (wat nergens echt omschreven is). Overigens, door het verplaatsen van dit probleem naar een dubbele login is het daarmee nog niet opgelost omdat je daar precies hetzelfde probleem hebt: het proces waarin je een zekere controle uitvoert waarna je een zekere handeling uitvoert is niet ondeelbaar. Precies hetzelfde verhaal speelt bij je dubbele login.

Wat jij waarschijnlijk nodig hebt bij het oplossen van het probleem, waarbij je dus afdwingt dat een reeks van handelingen ondeelbaar is, is gebruikmaking van transacties.

Maar goed, wellicht moet je zelf eerst goed je hoofd stoten voordat je hiervoor waardering kunt opbrengen :).
Gewijzigd op 30/03/2015 19:59:27 door Thomas van den Heuvel
 
NOLot -

NOLot -

30/03/2015 21:10:55
Quote Anchor link
Kun je me een link sturen naar een live voorbeeld? :) hhehehehehe
 

30/03/2015 23:56:49
Quote Anchor link
Nee het zit zo.
Het is een soort spel. op dat spel kunnen ze iets kopen in een shop.
Als ze een paar schermen te gelijk open hebben, laten we zeggen 4x, (4x ingelogd in 4 tabladen dus), dan kopen ze hetzelfde item in 4 schermen als ze snel klikken en dan hebben ze het voor de kosten van 1 product.
Dit verkopen ze weer en zo 'hacken' ze geld.

Dus alle opties hebben helemaal geen nut, een dubbel login moet gewoon geblokkeerd worden.
En zo ver ik weet moet dit prima lukken met het veld 'online2' in de tabel 'users'.
Want na het inloggen zet die het veld 'online2' op ja. Dus ik snap niet waarom dit niet werkt:
$user1 = mysql_query("SELECT * FROM `users` WHERE `online2`='nee' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
 
- Ariën  -
Beheerder

- Ariën -

31/03/2015 00:30:17
Quote Anchor link
Je kan wel een tweede login blokkeren, maar wat nu als iemand zijn cookies wist? Dan kan hij niet meer inloggen, en heeft hij zich buitengesloten.

Een tijdslimiet is de beste oplossing. Bij de bron aanpakken dus, de login is hier de bijzaak.

Over de beveiliging:
Het wachtwoord, deze wordt plain text in de URL gezet, en is zichtbaar in je browser. Een dikke no-go dus.

Verder is er ook een berg aan SQL-injecties mogelijk, zou erg rottig zijn dat iemand hierdoor de wachtwoorden van je leden bij elkaar hackt en deze brute-forced. Dan gaan je bezoekers je opeens jouw site niet meer fijn vinden.

Mijn advies: Neem het script grondig onder de loep.
Gewijzigd op 31/03/2015 00:44:43 door - Ariën -
 

31/03/2015 00:48:41
Quote Anchor link
En BTW Aar C,

De passwords kunnen onmogelijk achterhaald worden omdat ze md5 encrypted zijn.

Toevoeging op 31/03/2015 00:49:50:

Je snapt niet dat het niks met cookies te maken heeft.
Het veld online2 verandert pas weer nadat er op uitloggen is geklikt.
 
- Ariën  -
Beheerder

- Ariën -

31/03/2015 00:52:43
Quote Anchor link
Sorry, MD5 is al lang achterhaald. Bruteforce, dictionairy attacks.... het kan allema a l.
Gebruik liever password_hash en password_verify.


En wat als iemand zijn cookies wist? Dan is hij uitgelogd en staat online2 nog op inlogd, en kan hij niet meer inloggen.
Gewijzigd op 31/03/2015 00:55:19 door - Ariën -
 

31/03/2015 00:55:49
Quote Anchor link
EDIT: Sorry ik zie nu dat het wel met cookies werkt.
Hoe kan ik dit dan met de tijd doen?


Toevoeging op 31/03/2015 00:56:49:

Aar C op 31/03/2015 00:52:43:
En wat als iemand zijn cookies wist? Dan is hij uitgelogd en staat online2 nog op inlogd, en kan hij niet meer inloggen.


Inderdaad, daarom werkte dit niet:

$user1 = mysql_query("SELECT * FROM `users` WHERE `online2`='nee' AND `login`='{$_GET['x']}' AND `pass`=MD5('{$_GET['pass']}')");
 
- Ariën  -
Beheerder

- Ariën -

31/03/2015 00:56:56
Quote Anchor link
Zie stap 3 die ik genoemd heb. ;)

.
Gewijzigd op 31/03/2015 00:58:13 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

31/03/2015 00:59:09
Quote Anchor link
Jasper Schellekens op 30/03/2015 23:56:49:
Nee het zit zo.
Het is een soort spel. op dat spel kunnen ze iets kopen in een shop.
Als ze een paar schermen te gelijk open hebben, laten we zeggen 4x, (4x ingelogd in 4 tabladen dus), dan kopen ze hetzelfde item in 4 schermen als ze snel klikken en dan hebben ze het voor de kosten van 1 product.
Dit verkopen ze weer en zo 'hacken' ze geld.

Dit sterkt mij in het vertrouwen dat het gebruik van transacties toch, en nog steeds, de (enige) goede oplossing is.

Tenzij je overal waarden naartoe aan het kopieren bent, je moet wel al je administratie via de database regelen... Als hier sprake van is (je kopieert vanalles overal naartoe, bijvoorbeeld een saldo dat je in je sessie zet ofzo...) dan is je code gewoon brak en kun je beter opnieuw beginnen.
Gewijzigd op 31/03/2015 01:02:21 door Thomas van den Heuvel
 

01/04/2015 18:38:11
Quote Anchor link
Ik heb iets geprobeert en dat is gelukt het werkt nu.
Alleen zit ik een beetje ermee over die sql injection waar Aar C het over had.
Zou zoiets als dit werken?

{
if(eregi($foutbezig,$locatie))
{
echo "Internet fout, ip adres doorgegeven aan domein houder.";
mail("emailadre","Mysql Injection","Mysql Injection
IP-Adres: $_SERVER[REMOTE_ADDR]","From: Company<emailadres>");
exit();
}
}

Ik kwam het tegen ergens, geen idee of het echt met sql injection te maken heeft.
T is gewoon een vraag.
En hoe kan ik anders een injection blokken?
 
- Ariën  -
Beheerder

- Ariën -

01/04/2015 18:39:41
Quote Anchor link
Het is meer een detectie, als het kwaad al is geschied. Verder is eregi() ook een oude functie die omgebouwd moet worden naar preg_match.

Als je SQL-injection wilt tegengaan, kijk dan vooral naar mysqli_real_escape_string(), ervan uitgaande dat je ook de MySQLi-functies gebruikt. Als de de object-georiënteerde manier gebruikt, is het $mysqli->real_escape_string().
Zie ook: http://php.net/manual/en/mysqli.real-escape-string.php
Gewijzigd op 01/04/2015 18:43:33 door - Ariën -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/04/2015 20:34:12
Quote Anchor link
Thomas van den Heuvel op 31/03/2015 00:59:09:

Dit sterkt mij in het vertrouwen dat het gebruik van transacties toch, en nog steeds, de (enige) goede oplossing is.


Wat hebben transacties in deze context voor toegevoegde waarde?
Transacties zijn database-sessie afhankelijk, verschillende tabbladen === verschillende database-sessies.
Gewijzigd op 01/04/2015 21:49:19 door Ger van Steenderen
 
Thomas van den Heuvel

Thomas van den Heuvel

01/04/2015 22:20:01
Quote Anchor link
Ger van Steenderen op 01/04/2015 20:34:12:
Wat hebben transacties in deze context voor toegevoegde waarde?

Well...
Quote:
Het nadeel is dat spelers een gat hebben gevonden om zeg maar te hacken.
Als ze dubbel inloggen en snel klikken dan krijgen ze het 2/3 misschien zelfs 10 keer voor de prijs van 1.

Is dat niet haast een 1:1 schoolvoorbeeld [1] waarbij (soortgelijke) sets handelingen meerdere keren (tegelijkertijd) herhaald worden en er een zodanige verweving plaatsvindt zodat dit een ongewenst effect heeft?
Als je transacties gebruikt zorg je ervoor dat zo'n set (=één sessie) een ondeelbaar geheel wordt. Er vindt dan géén verweving plaats en je administratie blijft dan kloppen. Sure, je kunt dan nog steeds 100x tegelijkertijd een script aanroepen, maar de set wordt dan 100x na elkaar uitgevoerd (de ene set wacht tot de andere klaar is) en de toestand van het systeem zou na afloop nog steeds moeten kloppen. Of de transacties worden op den duur afgekapt omdat je gewoon blut bent, dan moet je maar niet 200x een knop spammen :). Maar dat klopt dan nog steeds, in die zin dat er niet uit het niets ineens valuta wordt gecreëerd, en een aankoop mislukt omdat je onvoldoende valuta hebt...

[1] Dit wordt min of meer beschreven in de laaste alinea van deze paragraaf.

Het verbaast mij dat ik dit (aan jou) moet uitleggen?

EDIT: sterker nog, waarschijnlijk leven de "database-sessies" alleen tijdens het uitvoeren van het script en zijn daarna weg (heeft dus niet eens iets met tabs te maken). Tenzij je wellicht persistente connecties gebruikt, geen idee hoe de situatie dan is.
Gewijzigd op 01/04/2015 22:27:59 door Thomas van den Heuvel
 

Pagina: 1 2 volgende »



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.