Dubbel inloggen blokkeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

PHP Developer - Draag bij aan de maatschappij!

Bedrijfsomschrijving Wil jij als applicatieontwikkelaar deel uitmaken van een gedreven ontwikkelteam en werken aan innovatieve producten? Dan hebben wij dé uitdaging voor jou! Wij zijn op zoek naar een enthousiaste collega die samen met ons de technische ondergrond van onze producten verder wil ontwikkelen met behulp van PHP. Met jouw expertise geef je de finishing touch aan onze producten om jezelf steeds opnieuw weer te verrassen. Functieomschrijving Bij ons staan innovatie en creativiteit centraal. Wij zijn op zoek naar een enthousiaste PHP ontwikkelaar die nieuwe ideeën en inzichten kan inbrengen en daarmee zichzelf en het team verder kan laten groeien.

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Frontend Developer - Leeuwarden

Frontend Developer – Leeuwarden Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Back-end Programmeur

Functieomschrijving Heb jij kort geleden je HBO ICT in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een ambitieuze werkgever in de regio van Breda zijn wij op zoek naar een Back-end programmeur met affiniteit met C#.NET, SQL en MS Access. Samen met team bestaand uit ware ICT professionals ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Belangrijk is dat je kennis of ervaring hebt van C#.NET en SQL. Je toont een flexibele en sociale houding naar klanten toe. Je denkt in nieuwe mogelijkheden & gaat graag de uitdaging aan. Bedrijfsprofiel De

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

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

03/01/2025 07:23:18
 
- 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.