Kod biçimlendirme için bir cevap olarak bu koymak, ama ...
@ Luhiz: javascript "meta karakterler" içeren bir javascript bloğun içine veri ekleme konum ne düşünüyorum. Diyelim ki böyle bir sorgu parametresi olarak bir kişinin tam adını geçiyoruz diyelim:
http://example.com/index.php?name=John+O'toole
PHP, size gerekecek:
$_GET['name'] = "John O'toole";
ve javascript blok içine yerleştirdiğinizde, alırsınız:
var name = John O'toole;
Şimdi birkaç sorun var:
- Eğer sayfanın içine çiğ kullanıcı hackable verileri ekledikten
- Lütfen dize gibi bir javascript sözdizimi hatası tırnak içine alınmamış
- Adı olarak başka bir sözdizimi hatası sonra başka bir alıntı ile sona olmayan bir dize başlayan tek bir alıntı içerir.
Tartışma:
- Bu klasik bir XSS (cross-site betik) saldırıdır. Herhangi bir güvenlik olmadan bir html sayfası içine kullanıcı tarafından sağlanan verileri yerleştirerek ediyoruz. Basit saldırı örneği kullanmak için
http://example.com/index.php?name=alert("you've been hacked!");
. Bunu deneyin ve neler olacağını görün.
2 & 3: json_encode kullanarak, PHP otomatik olarak sözdizimsel güvenli Javascript içine kodlama ne olursa olsun dönüştürür. Bu "güvenli" kod anlamına gelmez - hala kötü niyetli veri içerebilir. Sayfa istemci tarayıcı tarafından yüklenen Ama ne zaman bir sözdizimi hatasına sebep olmaz. Böylece yaparak:
var name = <?php echo json_encode($_GET['name']);
Eğer böyle bir şey alırsınız:
var name = "John O'toole";
hangi javascript tercüman olmadan herhangi bir şikayetleri kabul eder.