[bglug] Ajax, php e protezione del codice

Alberto Bonacina bonacina.alberto@gmail.com
Ven 16 Set 2016 00:24:10 CEST


Il 15 settembre 2016 23:09, Roberto Santini
<roberto.santini89@gmail.com> ha scritto:

> Ogni pagina PHP fa uso di Javascript/jQuery e
> carica/elabora dati da database attraverso altre pagine PHP più semplici.

Ma i parametri di connessione al db, per esempio, sono scritti in file
js o in un file di config in PHP?

> Tuttavia, per ora, nulla impedisce ad uno un po sgamato di aprire
> direttamente la pagina PHP 'semplice' (chiamiamola figlia), quella che ha
> accesso diretto al db, a prescindere dalla 'madre', dunque può
> creare/modificare record.

Scusa Roberto ma non ho capito questa parte... se uno utente aprisse
la pagina renderizzata nel browser supponiamo la index.php non
potrebbe vedere il codice php che ha generato quella pagina ma solo il
suo risultato. Non ho sinceramente capito come potrebbe andare a
leggere i singoli file php...
Sinceramente mi preoccuperei più del codice javascript che non di
quello php, quello è veramente in chiaro essendo eseguito lato
"client" e non server come invece lo sarebbe quello php.

se crei un file php con scritto

---------------------8-------------
<?php
echo "<h1>hello world"</h1>";
?>
---------------------8-------------

e poi apri quella pagina dal browser quello che vedi nel sorgente della pagina è

-----------------8<---------
<html><head></head><body><h1>hello world</h1></body></html>
-----------------8<----------

anche supponendo di fare un wget di quella pagina ottieni comunque

-----------------8<---------
<h1>hello world</h1>
-----------------8<---------

ma non sai l'effettivo codice php che l'ha eseguito...

> 1) potrei, ad ogni chiamata ajax, passare al file php una sorta di password
> per poter essere eseguito; in questo modo le due pagine sono legate ma il
> file javascript rimane leggibile, dunque anche la password. Ho letto in giro
> che offuscare il codice non è la cosa migliore.
> 2) potrei creare una variabile di sessione e ne verifico l'esistenza nella
> pagina figlia prima di continuare l'esecuzione.

Supponendo di utilizzare password, creazione di hash, qualsiasi cosa
lato client (javascript, jquery) per come detto prima possono essere
lette. Quello che puoi fare è utilizzare una variabile di sessione
ottenuta per esempio tramite login, e poi utilizzare sempre quella per
eseguire/controllare le chiamate lato server, oppure sfruttare i
cookie del browser e poi andare a leggere quel cookie che hai settato
per verificare che sia stata fatta un'autenticazione.

Oppure dato che usi php, spero non "puro" ma magari qualche framework,
potresti avere già a disposizione dei metodi per creare delle
sessioni, passare dai parametri in post con anche degli hash con
codice lato server, in modo che non sia comunque intercettabile per un
utente che guarda semplicemente la tua pagina nel browser...

Spero di esserti stato d'aiuto.

-- 
Bonacina Alberto
Website: www.albertobonacina.com


Maggiori informazioni sulla lista bglug