beveiliging tussen jquery en php bestanden.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ama saril

ama saril

12/11/2012 15:16:48
Quote Anchor link
Hallo mensen ik heb een vraag (alweer).

Als ik een request maak met jquery $.ajax naar een php bestand. Is het voor het php bestand dan mogelijk om te controleren dat MIJN javascript bestand dit aanroept en niet dat het van een andere website afkomt?

als ik dus een .js heb staan met mijn ajaxcode op www.eenwebsite.nl/javascript.js en dit script roept mijn phpbestand aan op www.eenwebsite.nl/php/code.php wil ik dat mijn php controleert of het verzoek wel echt van www.eenwebsite.nl/javascript.js afkomt en niet dat het door iemand anders wordt aangeroepen. Is het mogelijk dat een php dit kan afvangen?

Heb al zitten googelen maar kom niet echt tot een goed antwoord.

alvast bedankt.
 
PHP hulp

PHP hulp

21/11/2024 20:30:15
 
Chris PHP

Chris PHP

12/11/2012 15:23:37
Quote Anchor link
Ligt erhaan hoe je het via JS aanroept.

Je zou dit middels een sessie of 'functionele' cookie kunnen doen. Let wel dat JS op de client zeide gebeurt en PHP op de server zeide. Om dus te controleren of het om dezelfde browser/gebruiker gaat is een sessie aanmaken of een cookie weg te schrijven waar een random string in staat waarmee je valideerd.
Gewijzigd op 12/11/2012 15:24:13 door Chris PHP
 
Kris Peeters

Kris Peeters

12/11/2012 16:08:21
Quote Anchor link
Ja, dat lijkt me de eenvoudigste oplossing.

Een voorbeeldje. Dit script vereist dat de Ajax-request gebeurt door de pagina die jij (de server) naar de gebruiker hebt gestuurd.

Je kan testen op volgende manier: met twee tabs van je browser.
Open deze pagina in tab 1. Open dan de zelfde pagina in tab2. Klik dan op de knop van tab 1. => php zal merken dat de session-variabele veranderd is (door tab 2) en zal de request weigeren.

Merk op: er zijn, zonder enige twijfel, betere oplossingen dan mijn script hier.
... maar het illustreert wel dat er mogelijkheden zijn met SESSION.

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
35
36
37
38
39
<?php
session_start();
if (!empty($_GET['ajax'])) {
  // ajax
  if (!empty($_SESSION['code']) && $_SESSION['code'] === $_GET['ajax']) {
    echo 'alles okay';
  }

  else {
    echo "goed geprobeerd, maar 't zal niet lukken.";
  }

  exit;
}

else {
  // genereert 10 tekens die vrij willekeurig zijn, maar sowieso veilig zijn; de tekens bevatten enkel cijfers en letters.
  // voel je vrij om hier iets anders van te maken

  $_SESSION['code'] = substr(md5(time() . 'Hello'), 5, 10);
}

?>

<!DOCTYPE html>
<html>
  <body>
    <input type="button" value="klik" id="klikbutton">
    <div id="message"></div>
    
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
          $("#klikbutton").click(function() {
            $.ajax({
              url: 'index.php?ajax=<?php echo $_SESSION['code']; ?>' ,
              success: function(message) {
                $("#message").html(message);
              }
            });
          });
        });
    </script>
  </body>
</html>
 
Ama saril

ama saril

12/11/2012 16:12:39
Quote Anchor link
Ah hartstikke bedankt voor het voorbeeld dit moet zeker gaan werken voor wat ik aan het maken ben.

Bedankt!
 
- Ariën  -
Beheerder

- Ariën -

12/11/2012 17:29:54
Quote Anchor link
Trouwens, standaard werkt AJAX niet cross-domain. Dus dit zou niet werken vanaf bijv. 'http://www.zijnsite.nl':

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$.ajax({
              url: 'http://www.jouwsite.nl/ajax.php' ,
              success: function(message) {
                $("#message").html(message);
              }
Gewijzigd op 12/11/2012 17:30:22 door - Ariën -
 
Ama saril

ama saril

13/11/2012 09:31:11
Quote Anchor link
- Aar - op 12/11/2012 17:29:54:
Trouwens, standaard werkt AJAX niet cross-domain. Dus dit zou niet werken vanaf bijv. 'http://www.zijnsite.nl':

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$.ajax({
              url: 'http://www.jouwsite.nl/ajax.php' ,
              success: function(message) {
                $("#message").html(message);
              }


Dat klopt inderdaad maar als ik het goed begrijp kan hij het wel met een eigen php bestand aanroepen en dat wilde ik eigenlijk vermijden. Alleen mijn script moet er gebruik van maken en niks anders :)

edit
--------
Nog iets gevonden:
$_SERVER['HTTP_X_REQUESTED_WITH']
dit geeft voor zover ik kan lezen aan dat het een ajax request is waardoor ik eventueel ervoor kan zorgen dat (externe) php bestanden niet mijn code kunnen aanroepen.
Gewijzigd op 13/11/2012 15:52:29 door ama saril
 



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.