Javascript $ _GET / $ _SESSION saklanan değerlerin Kullanımı

2 Cevap php

Bazı gerçekten dumbed sorular soruyorum eğer Javascript ve PHP yüzden lütfen bana ayı için oldukça yeni.

Tamam, ben bir PHP $ _GET veya $ _SESSION depolanan değerleri kullanmak gerekir ki, sadece böyle bir şey yapmak için tavsiye edilir

var something = PHP echo $_SESSION or $_GET

2 Cevap

JavaScript ayrıştırmak için veri güvenli hale getirmek gerekir. Bir sayı ise var something = <?php echo $SESSION['foo']; ?> çalışacak. Bir dize ise tırnak eklemeniz gerekir. Dize özel karakterler içeriyorsa, vb onlar kaçtı gerekir

Yoluyla veri Koşu json_encode JavaScript güvenli hale getirmek için iyi bir yoldur.

$ _GET Kullanıcı verilerini girmiş olduğundan, bunu kontrol etmeden bir sayı olduğunu bilmiyor, bu nedenle şeyler güvenli yapmazsanız, o zaman büyük bir XSS delik var. Bunu bile bile, o zaman JavaScript veri ile ne sonra XSS maruz eşik olabilir.

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:

  1. Eğer sayfanın içine çiğ kullanıcı hackable verileri ekledikten
  2. Lütfen dize gibi bir javascript sözdizimi hatası tırnak içine alınmamış
  3. 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:

  1. 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.