Nasıl Yer kaçmak için: başlık değeri düzgün?

0 Cevap php

Benim webapp I (örneğin POST / GET / redirect) HTTP yönlendirme için Location: başlıkları kullanıyorum. Ama hedef yerleri dinamik olması gerekiyor (örneğin login.php?dest=pagexy.php). Hepimiz herhangi bir kullanıcı tarafından değiştirilebilir girdi, böylece düzgün XSS önlemek için kaçtı gerektiğini biliyorum

 header('Location: '.$_REQUEST['dest']);

yanlış görünüyor. Basit urlencode-ing sadece basit dosyalar değil, yolları (Single-Sign-On ile, örneğin çapraz etki alanı URL'ler) için kullanılabilir.

Ben de benzeri güvenlik açıkları hakkında okudum:

Location: javascript:...bad.stuff...  or
Location: data:text/html:base64,...

Yerlerinden açık bir beyaz liste olur muhtemelen en güvenli çözüm olması, ancak sıkıcı ve hatta tüm kullanım-durumlar için mümkün olmayabilir.

Çözümler?

Edit:

  1. Is urlencoding enough/correct for simple files? Assume a recent PHP version (> 5.1.2, AFAIK) that forbids newlines in header().

  2. Nasıl güvenli birbirleriyle önceden etki alanını bilmeden cross-domain kimlik denetimine işleyebilir?

0 Cevap