Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 32621|Yanıt: 2

[Güvenlik Açığı] "Content-Security-Policy" başlığında eksik veya güvensiz güvenlik açıkları

[Bağlantıyı kopyala]
Yayınlandı 11.06.2021 10:36:39 | | | |
HTTP yanıt başlığı Content-Security-Policy, sitenin kullanıcı ajanının belirli bir sayfa için hangi kaynakları yüklediğini kontrol etmesini sağlar. Özel durumlar dışında, politikalar kümesi esas olarak sunucunun kaynak ve script uç noktalarını belirtmeyi içerir. Bu, çapraz site betik saldırılarını durdurmaya yardımcı olur

Belge:Bağlantı girişi görünür.

Bu makale, W3C'nin İçerik Güvenlik Politikası'nı (kısaca CSP) açıklamaktadır. Adından da anlaşılacağı gibi, bu spesifikasyon içerik güvenliğiyle ilgilidir ve esas olarak bir sayfanın hangi kaynakları yükleyebileceğini tanımlamak ve XSS oluşumunu azaltmak için kullanılır.

Erken dönem Chrome, X-WebKit-CSP yanıt başlığı üzerinden CSP'yi desteklerken, firefox ve IE X-Content-Security-Policy'yi desteklerken, Chrome25 ve Firefox23 standart Content-Security-Policy (Content-Security-Policy) modelini desteklemeye başladı.

Web uygulamalarıyla ilgili kullanıcı adları, şifreler, makine adları ve/veya hassas dosya konumları gibi hassas bilgiler toplanabilir
Yeni başlayan kullanıcılar, kullanıcı adları, şifreler, kredi kartı numaraları, sosyal güvenlik numaraları gibi hassas bilgileri sağlamaya ikna edilebilir


Öncelikle, MVC ASP.NET yeni bir proje oluşturalım, yeni bir js betiği oluşturalım ve Baidu istatistiklerinin js kodunu dinamik olarak şu şekilde yükleyelim:




Yukarıdaki şekilde gösterildiği gibi, üçüncü taraf JS'de çerez çalmak, içerik değiştirmek, bağlantıları atlamak gibi zararlı kodlar varsa, üçüncü taraf bir tarafa (Baidu) başarıyla getirilen JS script kodunu görebiliriz.

Güvensiz üçüncü taraf JS betiklerinin ortaya çıkmasını nasıl durdurabilirim?

Çözüm

Yanıt başlığı"İçerik-Güvenlik-Politikası" eklemesela:

Content-Security-Policy: default-src 'self' Bağlantı girişi görünür.;
                         connect-src 'hiçbiri';
Content-Security-Policy: connect-src Bağlantı girişi görünür.
                         script-srcBağlantı girişi görünür.

Direktif
Komut değeri örneği
Göstermek
default-src
'Kendi' cnd.a.com
Tüm kaynak türleri için varsayılan yükleme politikasını (JS, IMAGE, CSS, WEB FONT, AJAX istekleri, iframe'ler, multimedya vb.) tanımlayın ve ayrı tanımlanmış politika yoksa belirli kaynak türleri için varsayılan politikayı kullanın.
script-src
'Kendi' js.a.com
JavaScript için bir yükleme politikası tanımlayın.
style-src
'Kendi' css.a.com
Bir stil için yükleme politikası tanımlayın.
img-src
'Kendi' img.a.com
Görüntüler için bir yükleme politikası tanımlayın.
connect-src
'benlik'
Ajax, WebSockets vb. talepler için politikaların yüklenmesi. İzin verilmezse, tarayıcı 400 statüsüyle bir yanıtı simüle eder.
font-src
font.a.com
WebFont için yükleme politikası.
object-src
'benlik'
<object><embed> <applet> Flash gibi eklentiler için yükleme politikaları, , veya . gibi etiketler için tanıtıldı.
media-src
media.a.com
<audio> <video> HTML multimedya için yükleme stratejileri, örneğin veya gibi etiketler için tanıtıldı.
frame-src
'benlik'
Çerçeveler için yükleme politikası.
kum kutusu
Izin Formları
İstenen kaynak için sandbox'u (bir iframe'in sandbox özelliğine benzer) etkinleştirin.
report-uri
/report-uri
Eğer talep edilen kaynak politika tarafından izin verilmiyorsa, tarayıcıya hangi adrese kayıt bilgilerini göndereceğini söyleyin. Özel: Tarayıcının sadece kayıtları raporlamasını ve hiçbir şeyi engellememesini istiyorsanız, bunun yerine İçerik-Güvenlik Politikası-Sadece Rapor başlığını kullanabilirsiniz.

Projenin web.config dosyasını özel bir yanıt başlığı eklemek için şu şekilde değiştirelim:

Projeyi aşağıda gösterildiği gibi tekrar çalıştırın:



Tarayıcı, üçüncü taraf js betiklerinin yüklenmesini başarıyla engelledi:

'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' betisini yüklemeyi reddetti çünkü aşağıdaki İçerik Güvenliği Politikası direktifini ihlal ediyor: "script-src 'self' http://localhost:56888/ ". 'script-src-elem' açıkça ayarlanmadığı için 'script-src' yedek olarak kullanılmıştır.
(Son)




Önceki:ASP.NET MVC HttpApplication yürütme sırası
Önümüzdeki:Popüler tarayıcı User-Agent ansiklopedisini özetlemek gerekirse,
Yayınlandı 17.12.2021 22:38:43 |
Öğrenin !!!!!!!!!!!!!!
Yayınlandı 18.10.2022 17:16:34 |
Uzun zamandır arıyorum ve biraz öğrendim
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com