Hoe maak ik een AJAX call naar PHP veilig?

Gestart doorViezelolly13 reacties279 weergaven

14 berichten · pagina 1 van 1

Viezelolly

Lid · Topicstarter

Berichten
294
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Heyhey,

Ik zou graag een AJAX call willen maken door middel van JQuery. De bedoeling is dat de PHP code alleen wordt uitgevoerd vanuit de AJAX call en niet wanneer de PHP code zelf wordt aangeroepen. Is er een manier om dit te realiseren?

Ik hoor graag van jullie!

xoxo ViezeLolly
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
In Ajax een POST request maken en daar dan een vaste data aan meegeven. Bijvoorbeeld [c]$_POST[ajax] = true;[/c]
Kijk dan in de PHP of [c]$_POST[ajax] == true[/c] en als dat het geval is, uitvoeren.
0
Berichten
18.482
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het hoeft niet eens per-se met POST en al helemaal niet per-se met een POST parameter. Zolang je maar een parameter hebt die anders is tijdens een AJAX call dan tijdens een normale call werkt het al. Bijvoorbeeld:
  • Een controle of er een bepaalde GET-parameter binnenkomt (zoals ajax=1)
  • Een controle of er een POST request binnenkomt in plaats van GET
  • Een controle of er een POST request binnenkomt met een bepaalde parameter (zoals ajax=1)
0
Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
GET-paramaters zijn te faken, de aanroep naar een AJAX-call kan je met een degelijke webdeloper-toolkit zo opzoeken.

Ikzelf zit te denken aan PHP-sessions binnen je domein. Misschien dat dat nog zal werken.
Ook kan je kijken of een request daadwerkelijk via AJAX gaat:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700](![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTP_X_REQUESTED_WITH[/COLOR][COLOR= #007700]]) &&[/COLOR] [URL="http://www.php.net/strtolower"]strtolower[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTP_X_REQUESTED_WITH[/COLOR][COLOR= #007700]]) ==[/COLOR] [COLOR= #DD0000]xmlhttprequest[/COLOR][COLOR= #007700]) {[/COLOR]
[COLOR= #FF8000]//AJAX HIER! (en dus geen feyenoord)[/COLOR]
[COLOR= #007700]}[/COLOR]
?>
0
Viezelolly

Lid · Topicstarter

Berichten
294
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bedankt allemaal! biggrin
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Aarclay schreef:
GET-paramaters zijn te faken, de aanroep naar een AJAX-call kan je met een degelijke webdeloper-toolkit zo opzoeken.

Ikzelf zit te denken aan PHP-sessions binnen je domein. Misschien dat dat nog zal werken.
Ook kan je kijken of een request daadwerkelijk via AJAX gaat:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700](![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTP_X_REQUESTED_WITH[/COLOR][COLOR= #007700]]) &&[/COLOR] [URL="http://www.php.net/strtolower"]strtolower[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]HTTP_X_REQUESTED_WITH[/COLOR][COLOR= #007700]]) ==[/COLOR] [COLOR= #DD0000]xmlhttprequest[/COLOR][COLOR= #007700]) {[/COLOR]
[COLOR= #FF8000]//AJAX HIER! (en dus geen feyenoord)[/COLOR]
[COLOR= #007700]}[/COLOR]
?>
Volgens mij is ook dit gewoon makkelijk te faken hoor?

Mijn vraag is, waarom zou je de code alleen willen uitvoeren vanuit je eigen call? En niet als de user om een of andere reden zelf de pagina opvraagt?
Wat je zou kunnen doen is een algoritme bedenken die een code genereert en php doet dan hetzelfde, moet volgens een geheim algoritme gebeuren en als die codes overeenkomen dan de code uitvoeren, en elke code is maar eenmalig geldig en is gebonden aan een timestamp met een offset van 1 of 2 seconden, als het laden van de pagina langer duurt dan accepteert hij hem al niet.

Maar dit is allemaal overdreven moeilijk voor iets wat je gewoon moet laten zoals het is lijkt mij
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik denk dat je hele ontwerp voor dit systeem niet klopt, vertel eens wat je precies wilt doen, dan kunnen wij eens nadenken.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Het kan niet.

Een AJAX call is niets meer dan een request van je browser, dus niets belet iemand om die request gewoon na te bootsen.

Ga er dus maar vanuit dat het géén geldige AJAX call is en bouw met die gedachte je feature. Als je het echt wil weten dan klopt er inderdaad iets niet met je ontwerp, zoals Milan zegt.
0
Viezelolly

Lid · Topicstarter

Berichten
294
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hetgene wat ik wil is inloggen door middel van een AJAX call naar PHP.
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
En waarom zou dat niet via de pagina zelf mogen gaan?
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Viezelolly schreef:
Hetgene wat ik wil is inloggen door middel van een AJAX call naar PHP.
Je controleer via PHP of het wachtwoord klopt, waarom zou je dat via JS willen doen?

Dus form > ajax request > php checkt of het goed is

das veilig
0
Viezelolly

Lid · Topicstarter

Berichten
294
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylan schreef:
Eerdere citaten tonen
Viezelolly schreef:
Hetgene wat ik wil is inloggen door middel van een AJAX call naar PHP.
Je controleer via PHP of het wachtwoord klopt, waarom zou je dat via JS willen doen?

Dus form > ajax request > php checkt of het goed is

das veilig
Bedankt! smile
Maar: hij moet ook checken of er een adblocker actief is en dat is te faken en kan uiteraard niet door middel van PHP worden gecheckt... sadley
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Viezelolly schreef:
Eerdere citaten tonen
Dylan schreef:
Eerdere citaten tonen
Viezelolly schreef:
Hetgene wat ik wil is inloggen door middel van een AJAX call naar PHP.
Je controleer via PHP of het wachtwoord klopt, waarom zou je dat via JS willen doen?

Dus form > ajax request > php checkt of het goed is

das veilig
Bedankt! smile
Maar: hij moet ook checken of er een adblocker actief is en dat is te faken en kan uiteraard niet door middel van PHP worden gecheckt... sadley
Als een website goed genoeg is zet ik mijn adblocker wel uit
Als ik een contentgate krijg omdat ik een adblocker aan heb staan kom ik niet meer op de site.

Dus weet niet of je content wil limiteren wanneer er een adblocker actief is, maar zet dat idee maar uit je hoofd. Dat is funest voor je website.
0
Viezelolly

Lid · Topicstarter

Berichten
294
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Eerdere citaten tonen
Viezelolly schreef:
Eerdere citaten tonen
Dylan schreef:
Eerdere citaten tonen
Viezelolly schreef:
Hetgene wat ik wil is inloggen door middel van een AJAX call naar PHP.
Je controleer via PHP of het wachtwoord klopt, waarom zou je dat via JS willen doen?

Dus form > ajax request > php checkt of het goed is

das veilig
Bedankt! smile
Maar: hij moet ook checken of er een adblocker actief is en dat is te faken en kan uiteraard niet door middel van PHP worden gecheckt... sadley
Als een website goed genoeg is zet ik mijn adblocker wel uit
Als ik een contentgate krijg omdat ik een adblocker aan heb staan kom ik niet meer op de site.

Dus weet niet of je content wil limiteren wanneer er een adblocker actief is, maar zet dat idee maar uit je hoofd. Dat is funest voor je website.
De website is voor een advertentienetwerk, later zou er een vergoeding aan de publisher moeten worden uitgekeerd haha.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren