Cross-site scripting genellikle negatif olarak kabul edilir iken, ben gerekli çeşitli durumların içine çalıştırmak.
Geçenlerde bir çok sınırlayıcı bir içerik yönetim sistemi sınırları içinde çalışıyordu. Ben sayfa içinde veritabanı kod eklemek için gerekli, ancak sunucu barındırma mevcut kullanılabilir bir şey yoktu. Ben aslında ben (böylece vb dinamik görüntüler, menü öğeleri, CSS, istinat) doğrudan CMS şablon içine benim komut içeriğini almak için AJAX kullanabilirsiniz düşünerek, kendi sunucusunda bir çift barebones komut dosyalarını kurmak. Yanılmışım.
Nedeniyle XMLHttpRequest nesneleri sınırlamaları, farklı bir etki alanından içerik kapmak mümkün değildir. Ben de "iFrame" düşündüm - Ben kare bir hayranı değilim rağmen, ben yerli görünür böylece ben, içeriğin genişliğini ve yüksekliğini uyumlu bir çerçeve oluşturmak düşündüm. Yine, cross-site scripting tarafından engellendi "korumaları." Ben gerçekten iFrame uzak bir dosyayı yüklemek olsa da, ben konak sayfa üzerinde veya yüklenen sayfa içinde boyutunu değiştirmek için JavaScript çalıştırılamadı.
Bu özel senaryoda, ben benim sunucu için bir alt işaret etmek mümkün değildi. I also couldn't create a script on the CMS server that could proxy content from my server, so my last thought was to use a remote JavaScript.
Uzak bir JavaScript çalışır. Kullanıcı bir dezavantajı olan, JavaScript devre dışı olduğunda kırılır; ama çalışıyor. Ben uzak bir JavaScript kullanarak yiyordum "sorun" Ben JS fonksiyonu document.write () çıkış için herhangi bir içerik kullanmak vardı. JS olmayan herhangi bir çıkış komut dosyası hataları neden olur. Her satır için document.write () kullanmanın yanı sıra, aynı zamanda içeriğin kaçtı sağlamak için var - yoksa daha fazla komut dosyası hataları ile sonuna kadar.
Aşağıdaki gibi benim çözüm oldu:
Benim komut dosyası, bir GET parametresi ("sayfa") alınan ve daha sonra dosyası ({$ sayfa}. Php) için baktım ve bir değişken içeriğini okuyun. Ancak, aslında her satır sonu karakterleri nihai içeriğini gerekli tüm karakterleri kaçan izledi ("\ n") şerit sonra (veritabanı etkileşimi gibi şeyler için) dahil komut dosyalarını çalıştırmak için garip tamponlama tekniklerini kullanmak zorunda kaldı. Sonuçta (JavaScript çıktılar) benim özgün senaryo benim sunucuda görünüşte "standart" komut erişir ve CMS şablon içinde görüntülemek için JavaScript standart çıktı dönüştürür olduğunu.
Bu çözüm çalışır iken aynı şeyi gerçekleştirmek için daha iyi bir yolu olabilir gibi görünüyor. Özellikle tamamen farklı bir etki alanından içerik dahil olmak amacıyla cross-site scripting iş yapmak için en iyi yolu nedir?