2010-11-23 2 views
0

Ich möchte wissen, was ist die sichere Methode, um PHP-Daten an js zu senden. Ich habe per Suche gefunden, um PHP-Tags in js zu starten und Daten auf diese Weise zu übergeben.Was ist der sichere Weg, um PHP-Daten an js zu senden?

var jsVar = "<"+"?php echo $phpVar;"+"?"+">"; 

Aber es scheint eine gefährliche Möglichkeit, Daten ausgesetzt Bedrohungen ausgesetzt zu sein. Ich möchte wissen, was alternative Möglichkeit ist, das gleiche zu tun, das sicher ist.

+1

ich JSON würde sagen, wenn Sie einen AJAX-Aufruf, um die Variable zu holen. –

+0

'@ Jorge' Es ist nicht so sicher, aber es ist einfach und es funktioniert. – Fred

+1

Was meinst du mit "sicher"? –

Antwort

3

Ich bin nicht ganz sicher, was Sie „sicher“ bedeuten, aber wenn ich Ihre Frage richtig verstanden habe, können Sie Daten von PHP direkt in Ihr JavaScript injizieren json_encode mit:

var jsVar = <?php echo json_encode($phpVar) ?>; 

Wenn alles, was Sie tun möchten, ist tatsächlich PHP-Quellcode in Ihrem Skript zu injizieren, dann drucken Sie es einfach als String:

var jsVar = "<?php echo '<?php echo $phpVar ?>' ?>"; 

ich das nicht vorstellen kann, ist das, was Sie aber bedeuten, wie ich kann nicht Denken Sie an einen Grund, dies zu wollen :)

1

json_encode ist der beste Weg, zurück zu senden.

echo json_encode($phpVar) 
3

Ich möchte wissen, was alternative Möglichkeit, das gleiche zu tun, die sicher ist.

Ich bin nicht sicher, was Sie unter „sicher“ bedeuten, aber man muss davon ausgehen, dass jede Daten, die Sie den Browser des Clients senden kann und wird durch eine ausreichend motivierte Benutzer eingesehen werden. Sie können die Daten vor neugierigen Blicken schützen in Transit (unter Verwendung von SSL, z. B. https), aber der Browser des Clientbenutzers muss in der Lage sein, die Daten zu lesen, was bedeutet, dass der Clientbenutzer auch kann.

Sie können den Balken leicht anheben (z. B. durch Verschleiern der in die Seite eingebetteten Daten, indem Sie ihn nur als Antwort auf einen Ajax-Aufruf usw. bereitstellen), aber mit den heutigen Netz- und Webwerkzeugen zunehmend in Browser eingebettet) ein ausreichend motivierter Benutzer Willen umgehen Sie die Vorsichtsmaßnahmen, die Sie ergreifen (durch schrittweisen durch Ihren Code und Blick auf die Variable, die Sie speichern die entschleierten Daten oder die Daten aus der Ajax-Antwort in, zum Beispiel) .

Wenn Sie die Messlatte noch weiter anheben möchten, benötigen Sie ein Plug-in wie Flash oder Java und senden verschleierte (oder sogar verschlüsselte) Daten an Ihre Flash-App/Java-Applet und ent-Verschlüsseln/Entschlüsseln innerhalb der App/Applet. Aber das stellt die Messlatte für jemanden mit Debugging-Tools für Flash oder Java höher.

Wahrscheinlich nicht die Mühe wert, ich wette, Sie haben bessere Dinge zu tun. :-)

Wenn Sie nicht möchten, dass der Benutzer die fraglichen Daten sieht, senden Sie sie nicht an sie, bewahren Sie sie auf Ihrem Server auf, wo sie sicher sind, und bitten Sie den Browser nur nach den Informationen, die er tatsächlich erlaubt um den Benutzer zu zeigen.

+1

Super Antwort! – Fred

1

Wenn Ihre Daten aus Ihrer Datenbank stammen, ist dies ziemlich sicher. Das Problem tritt auf, wenn Sie vom Benutzer eingegebene Daten speichern und erneut anzeigen. In diesem Fall müssen Sie sicherstellen, dass kein ausführbares Javascript in die Daten eingebettet werden kann. Das Entfernen oder Entweichen von "{}(); + -/* und deren Hex-Equalenten sollte es tun.

könnten Sie verwenden json_encode wie in answer vorgeschlagen diesen

Verwandte Themen