İframe'ler neden tehlikeli ve güvenlik riski olarak kabul edilir? Birisi kötü niyetli olarak kullanılabileceği bir vaka örneğini tanımlayabilir mi?
İframe'ler neden tehlikeli ve güvenlik riski olarak kabul edilir? Birisi kötü niyetli olarak kullanılabileceği bir vaka örneğini tanımlayabilir mi?
Yanıtlar:
Başka bir etki alanından içerik görüntüler göstermez, temelde o etki alanına kötü amaçlı yazılım sunmayacağına güveniyorsunuz.
Kendi başına iframe'lerin hiçbir sorunu yoktur. İframe içeriğini kontrol ederseniz, bunlar tamamen güvenlidir.
<iframe>
öğeyi içeren ) uygun bir stile sahipse ve iframe'in güvenilmeyen içerik barındırdığına dair ipucu veriyorsa sorun olmaz. Tabii ki tarayıcıda Modulo gerçek zafiyetler. Kısacası bir <iframe>
, bir <a href>
.
<iframe>
gizli iframe içinde içerik saldırgan tarafından değiştirilebilir eğer güvenlik riski neden olabilir aynı etki alanından. Bu, saldırganın gizli olan XSS saldırısını <iframe>
sitenizdeki söz konusu <iframe>
d içeriğine başvuran herhangi bir sayfaya genişletmesine olanak tanır . Ayrıntılar için stackoverflow.com/a/9428051/334451 adresine bakın.
IFRAME
Eğer eleman bir güvenlik riski olabilir Siteniz bir iç gömülü olduğu IFRAME
düşmanca sitesinde . Daha fazla ayrıntı için Google "tıklama hırsızlığı". Kullanıp kullanmamanın önemli olmadığını unutmayın<iframe>
. Bu saldırıdan tek gerçek koruma, HTTP başlığı eklemek X-Frame-Options: DENY
ve tarayıcının işini bildiğini ummaktır.
Buna ek olarak, sitenizdeki herhangi bir sayfada yararlanılabilecek bir XSS güvenlik açığı bulunuyorsa , IFRAME öğesi bir güvenlik riski oluşturabilir . Bu durumda saldırgan, XSS saldırısını <iframe>
, XSS zafiyeti olan bir sayfada yüklenmeye ikna edilebilecek aynı etki alanındaki herhangi bir sayfaya genişletebilir . Bunun nedeni, aynı kaynaktan (aynı etki alanı) gelen içeriğin üst içerik DOM'a erişmesine izin verilmesidir (JavaScript'i "ana bilgisayar" belgesinde pratik olarak çalıştırın). Bu saldırıdan tek gerçek koruma yöntemi, HTTP üstbilgisi eklemek X-Frame-Options: DENY
ve / veya kullanıcı tarafından gönderilen tüm verileri her zaman doğru şekilde kodlamaktır (yani, sitenizde hiçbir zaman bir XSS güvenlik açığına sahip olmayın - söylemesi yapmaktan daha kolay).
Sorunun teknik tarafı budur. Ek olarak, kullanıcı arayüzü sorunu var. Kullanıcılarınıza, URL çubuğunun bağlantıları tıkladıklarında değişmemesi gerektiğine güvenmelerini öğretirseniz (örneğin, siteniz tüm gerçek içeriğe sahip büyük bir iç çerçeve kullanır), gerçek güvenlik durumunda da kullanıcılar gelecekte hiçbir şey fark etmeyecektir. Güvenlik açığı. Örneğin, sitenizde saldırganın iframe'inizdeki düşman kaynaklardan içerik yüklemesine izin veren bir XSS güvenlik açığı olabilir. Hiç kimse farkı anlayamadı çünkü URL çubuğu önceki davranışla aynı görünüyor (asla değişmiyor) ve içerik, kullanıcı kimlik bilgilerini isteyen düşmanca bir etki alanından gelse bile "geçerli görünüyor".
Eğer birisi <iframe>
sitenizde bir elementi kullanmanın tehlikeli olduğunu ve bir güvenlik riskine neden olduğunu iddia ederse , hangi <iframe>
elementin işe yaradığını anlamıyor veya <iframe>
tarayıcılarda ilgili güvenlik açıkları olasılığı hakkında konuşuyor . <iframe src="...">
Etiketin güvenliği , tarayıcıda güvenlik açığı olmadığı sürece eşittir <img src="..."
veya <a href="...">
uzun süredir. Ve uygun bir güvenlik açığı varsa <iframe>
, <img>
veya <a>
öğesi kullanmadan bile tetiklemek mümkün olabilir , bu nedenle bu konu için dikkate alınmaya değmez.
Bununla birlikte, içeriğinin <iframe>
varsayılan olarak üst düzey gezinmeyi başlatabileceği konusunda uyarılmalıdır . Yani, içindeki içeriğin <iframe>
geçerli sayfa konumu üzerinden otomatik olarak bir bağlantı açmasına izin verilir (yeni konum adres çubuğunda görünür olacaktır). Bundan kaçınmanın tek yolu, sandbox
değeri olmayan nitelik eklemektir allow-top-navigation
. Örneğin <iframe sandbox="allow-forms allow-scripts" ...>
,. Ne yazık ki sandbox, her zaman tüm eklentileri de devre dışı bırakır. Örneğin, Youtube içeriği korumalı alana alınamaz çünkü Flash oynatıcı hala tüm Youtube içeriğini görüntülemek için gereklidir. Hiçbir tarayıcı aynı anda eklenti kullanmayı ve üst düzey gezinmeye izin vermeyi desteklemez.
Not X-Frame-Options: DENY
(ayrıca "olarak bilinen içerik çapraz kökeni okuyabilir performans yan kanal saldırı oluşturma korur piksel mükemmel Zamanlama Attacks ").
"This is because content from the same origin (same domain) is allowed to access the parent content DOM (practically execute JavaScript in the "host" document)."
iframe'deki (alt) belgeye yönelik bir XSS güvenlik açığı içeren (ana) belge yönünde yeniden ifade edilmemeli ?
<iframe>
bir sayfada kullanırsanız , güvenlik açığının iframe içindeki içerikten belgeyi barındıracak şekilde genişletilmesine izin verir. Soru <iframe>
tehlikeli olmakla ilgiliydi ve ana belgede XSS güvenlik açığı varsa, bu <iframe>
öğeye gerçekten ihtiyacınız yok .
Etki alanları arası iFrame'i varsayıyorum, çünkü muhtemelen kendiniz kontrol ederseniz risk daha düşük olacaktır.
"Tehlikeli" ve "Güvenlik riski", insanlar iframe'den bahsederken ilk akla gelen şeyler değildir… ancak tıklama hırsızlığı saldırılarında kullanılabilirler .
iframe, Cross Frame Scripting'e karşı da savunmasızdır: