Opzetten van JSON request met jQuery

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Freak

PHP Freak

05/02/2011 10:26:09
Quote Anchor link
Beste medePHPers,

Momenteel ben ik het CodeIgniter framework aan het voorzien van een soort van abstracte Ajax-laag die met behulp van jQuery JSONrequests zal plaatsen en de response zal verwerken. Nu is het zo, dat in mijn JSONresponse diverse parameters zullen voorkomen:
- Messages, gerenderd in een HTML table
- uit te voeren javascript
- HTML output van de response, wordt gebruikt voor HTML die ergens op de pagina moet worden geplaatst
- Overige dingen die handig blijken

Mijn vraag is nu eigenlijk: Brengt het risico's met zich mee als de HTML niet geëscaped (met uitzondering van de \ die voor alle speciale tekens wordt geplaatst door json_encode) in de response wordt meegestuurd? En kan ik de meegestuurde Javascript het beste met jQuery.globalEval() evalueren of hebben jullie betere suggesties?

Alle tips zijn welkom!
 
PHP hulp

PHP hulp

22/11/2024 12:06:04
 
Pieter Jansen

Pieter Jansen

05/02/2011 14:29:35
Quote Anchor link
Alles is natuurlijk beter dan Eval()

Als de data die jij ophaalt gegenereerd wordt door jou, is het escapen niet een must. Als je toegang tot dat script alleen aan jezelf overlaat, zou ik me er niet zo druk over maken.

Als de JSON requests echter beinvloedbaar zijn door ( kwaadwillige ) gebruikers zul je inderdaad alles moeten escapen.

Om gegenereerde javascript alsnog uit te voeren, kun je wellicht het beste nog de .bind() methode / .live() methodes draaien in jquery.

Dat betekent alleen wel dat je er voor moet zorgen dat alle gegenereerde js veilig is.
 
Kris Peeters

Kris Peeters

07/02/2011 11:58:11
Quote Anchor link
>> - uit te voeren javascript

Wat bedoel je precies?
Ga je echt in de respons extra code zetten?

Je kan uiteraard op basis van gegevens in de respons bepaalde (bestaande) code laten uitvoeren, maar om die code zelf ook in de respons te zetten ... Het kan, maar is dat nodig?

Ik zou wel eens een stukje code willen zien. Zien waar je naar toe wil.
Ik ben geneigd te denken dat er niet zo vreselijk veel is dat kan fout lopen, maar dit toch met grote voorzichtigheid; misschien ben je dingen van plan waar ik momenteel niet aan denk.

Merk op, jQuery doet al veel voor je.
Met zo'n soort request:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
  $.ajax({
    type: "POST",
    url: url,
    dataType: "json",
    data: "...",
    success: my_callback
  });


krijg je pas een success als de data echt JSON is. Toch al 1 zorg minder.
 



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.