Office Çözümleriyle İlgili Belirli Güvenlik Konuları

.NET Framework ve Microsoft Office tarafından sağlanan güvenlik özellikleri, olası güvenlik tehditlerine karşı Office çözümlerinizi korumaya yardımcı olabilir.Bu konuda, bu tehditlerin bazılarını anlatılır ve onlara karşı koruma sağlamak için öneriler sağlanır.Ayrıca Microsoft Office güvenlik ayarlarının Office çözümlerini nasıl etkilediği hakkında bilgi içerir.

Uygulama hedefi: Bu konudaki bilgiler, Office 2013 ve Office 2010 için belge düzeyi projeler ve uygulama düzeyi projelere yöneliktir. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.

Güvenilir Kod Yeni, Kötü Amaçlı Belgede Yeniden Tasarlanır

Bir saldırgan, belirli bir amaç için örneğin, bir istihdam uygulaması için kişisel bilgileri karşıdan yükleniyor amaçlanmıştır güvenilir kodu alabilir ve çalışma sayfası gibi başka bir belgede onu yeniden kullanabilir.Kod, özgün belge çalışmıyor ve yukarı kişisel bilgilerinizi açıklamanız veya başka bir kullanıcı tarafından açıldığında arttırılmış ayrıcalıklarla kodu çalıştırma gibi tehditlere açık bilmez.Alternatif olarak, saldırgan çalışma sayfasındaki veriyi kolaylıkla değişebilir, örneğin belge kurbana yollandığında, beklenmedik şekilde çalışır.Koda bağlı çalışma sayfasının değerleri, formülleri veya sunu özelliklerini değiştirerek, kötü amaçlı kullanıcının diğer kullanıcıya değiştirilmiş dosyayı yollayarak saldırması olasıdır.Kullanıcıların, çalışma sayfasındaki değerleri değiştirerek görmemesi gereken bilgileri de görmesi olasıdır.

Derleme konumunun ve belge konumunun her ikisi de çalıştırmak için yeterli kanıta sahip olduğu için, bu saldırıyı çıkarmak kolay değildir.Örneğin, e-posta eklerindeki belgeler veya güvenilmeyen intranet sunucuları çalıştırmak için yeterli izine sahip değildirler.

Bu saldırıyı yapmak için, kodun kendisinin potansiyel olarak güvenilmeyecek veriye bağlı bir şekilde yazılması gerekir.Veritabanı sunucusunun adını içeren gizli bir hücreye sahip çalışma sayfasını oluşturmak buna bir örnektir.Kullanıcı, SQL kimlik doğrulaması ve sabit kodlanmış SA parolası kullanan sunucuya bağlanmayı deneyen çalışma sayfasını ASPX sayfasına gönderir.Saldırgan, gizli hücrenin içeriğini farklı bir bilgisayar ismiyle değiştirebilir ve SA parolasını alabilir.Bu problemden kaçınmak için, hiçbir sabit kodlu parolayı kullanmayın ve her zaman sunucu kimliğini, sunucuya erişmeden önce iyi olarak bilinen sunucuların iç listesine karşı denetleyin.

Öneriler

  • Kullanıcı, belge, bir veritabanı, web hizmeti veya başka bir kaynaktan gelen olup olmadığını her zaman giriş ve verileri doğrulayın.

  • Belli işlevsellik türlerini oluştururken dikkatli olun, örn. kullanıcı adına ayrıcalıklı veri alma ve onu güvenilmeyen bir çalışma sayfasına koyma.

  • Uygulama türüne bağlı olarak, herhangi bir kod çalıştırmadan önce özgün belgenin çalıştığını doğrulamak için anlamlı olmayabilir.Örneğin, bilinen ve güvenli bir konumda depolanan bir belgeden çalışmakta olduğunu doğrulayın.

  • Eğer uygulamanız herhangi bir ayrıcalıklı eylemi gerçekleştiriyorsa, belge açıldığında uyarı görüntülemek iyi bir fikir olabilir.Örneğin, uygulamanın kişisel bilgilere erişeceğini söyleyen karşılama ekranı veya başlangıç iletişim kutusu oluşturabilirsiniz ve kullanıcının devam veya iptal etmeyi seçmesini sağlayabilirsiniz.Eğer son kullanıcı zararsız görünen bir belgeden öyle bir uyarı alırsa, herhangi bir şey ele geçirilmeden uygulamadan çıkabilir.

Outlook Nesne Modeli Koruyucusu Tarafından Kod Engellenir

Microsoft Office, kodun nesne modelindeki bazı özellikleri, yöntemleri ve nesneleri kullanmasını engelleyebilir.Bu nesnelere erişimi kısıtlayarak, Outlook e-posta solucan ve virüslerinin kötü amaçlı nedenlerden dolayı nesne modelini kullanmasını engeller.Bu güvenlik özelliği Outlook nesne model güvenliği koruyucusu olarak bilinir.Nesne modeli koruyucusu etkinken eklenti sınırlı bir özelliği veya yöntemi kullanmayı denerse, Outlook kullanıcının işlemi iptal etmesini sağlayan veya özellik ya da yönteme kısa bir süre için erişimini sağlayan güvenlik uyarısı görüntüler.Kullanıcı işlemi durdurursa, Visual Studio'da Office çözümleri kullanılarak oluşturulan Outlook eklentileri yaratır bir COMException.

Nesne modeli koruyucusu Outlook'un Microsoft Exchange Server ile kullanılıp kullanılmamasına bağlı olarak eklentileri farklı yollarda etkileyebilir:

  • Eğer Outlook, Exchange ile kullanılmıyorsa, yönetici bilgisayardaki tüm eklentiler için nesne modeli koruyucusunu etkinleştirebilir veya devre dışı bırakabilir.

  • Eğer Outlook Exchange ile kullanılıyorsa, yönetici bilgisayardaki tüm eklentiler için nesne modeli koruyucusunu etkinleştirebilir veya devre dışı bırakabilir ya da yönetici bazı eklentilerin, nesne modeli koruyucusuyla karşılaşmadan çalışacağını belirtebilir.Yöneticiler, nesne modelinin belli alanları için nesne modeli koruyucusunun davranışını da değiştirebilir.Örneğin, yöneticiler nesne modeli koruyucusu etkin olsa bile eklentilerin programlı bir şekilde e-posta yollamalarına otomatik olarak izin verebilir.

Outlook 2007'de başlayarak, Outlook güvenliğini sağlamaya yardımcı olma sırasında geliştirici ve kullanıcı deneyimini geliştirmek için nesne modeli koruyucusunun davranışını değiştirildi.Daha fazla bilgi için bkz: Outlook 2007'deki güvenlik değişiklikleri kod.

Nesne Modeli Koruyucusu Uyarılarını En Aza İndirme

Sınırlı özellikleri ve yöntemleri kullandığınızda güvenlik uyarılarından kaçınmak için, eklentinizin Outlook nesnelerini projenizdeki ThisAddIn sınıfının Application alanından aldığına emin olun.Bu alan hakkında daha fazla bilgi için, bkz. Uygulama Düzeyi Eklentileri Programlama.

Sadece bu nesneden elde edilen Outlook nesnelerine, nesne modeli koruyucusu kullanarak güvenilebilir.Buna karşı olarak, yeni bir Microsoft.Office.Interop.Outlook.Application nesnesinden elde edilen nesneler güvenilmezdir ve sınırlı özellikler ve yöntemler, eğer nesne modeli koruyucusu etkinse güvenlik uyarıları verir.

Aşağıdaki kod örneğinde nesne modeli koruyucusu etkinse güvenlik uyarısı görüntülenir.Microsoft.Office.Interop.Outlook.MailItem sınıfının To özelliği nesne modeli koruyucu tarafından sınırlanır.Microsoft.Office.Interop.Outlook.MailItem nesnesi güvenilmezdir çünkü kod onu Application alanından elde etmek yerine, new kullanılarak oluşturulan Microsoft.Office.Interop.Outlook.Application'dan alır.

Private Sub UntrustedCode()
    Dim application As New Microsoft.Office.Interop.Outlook.Application
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub
private void UntrustedCode()
{
    Microsoft.Office.Interop.Outlook.Application application =
        new Microsoft.Office.Interop.Outlook.Application();
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

Aşağıdaki kod örneğinde, nesne modeli koruyucusu tarafından güvenilen Microsoft.Office.Interop.Outlook.MailItem nesnesinin sınırlı To özelliğinin nasıl kullanıldığı gösterilir.Kod, Microsoft.Office.Interop.Outlook.MailItem almak için güvenilir Application alanını kullanır.

Private Sub TrustedCode()
    Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
        TryCast(Me.Application.CreateItem( _
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem),  _
        Microsoft.Office.Interop.Outlook.MailItem)
    mailItem1.To = "someone@example.com"
    MessageBox.Show(mailItem1.To)
End Sub
private void TrustedCode()
{
    Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
        this.Application.CreateItem(
        Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
        Microsoft.Office.Interop.Outlook.MailItem;
    mailItem1.To = "someone@example.com";
    MessageBox.Show(mailItem1.To);
}

[!NOT]

Eğer Outlook Exchange ile kullanılırsa, tüm Outlook nesnelerini ThisAddIn.Application'dan elde etmek, eklentinizin tüm Outlook nesne modeline erişebileceğini garantilemez.Örneğin, eğer Exchange yöneticisi Outlook'u, Outlook nesne modeli kullanarak adres bilgilerine erişme denemelerini otomatik olarak reddetmek için ayarlarsa, kod örneği güvenilir ThisAddIn.Application alanını kullansa bile, Outlook önceki kodun To özelliğine erişmesine için vermez.

Exchange Kullanırken Hangi Eklentiye Güvenileceğini Belirtme

Outlook, Exchange ile kullanıldığında, yöneticiler belli eklentilerin nesne modeli koruyucusuyla karşılaşadan çalışabileceklerini belirleyebilirler.Visual Studio'da Office çözümleri kullanılarak oluşturulan Outlook eklentileri tek tek güvenilir değildir; Bunlar yalnızca bir grup olarak güvenilebilir.

Outlook, eklentinin giriş noktası DLL'inin karma koduna bağlı olarak eklentiye güvenir.Tüm Outlook hedefleyen eklentileri Office çalışma zamanı için Visual Studio Araçları aynı giriş noktası DLL'ine (sahiptir VSTOLoader.dll).Yönetici herhangi bir hedefleyen eklentiye güvenirse, yani Office çalışma zamanı için Visual Studio Araçları nesne modeli koruyucusu, sonra tüm diğer hedefler eklentileri koruyucusuyla karşılaşmadan çalıştırmak için Office çalışma zamanı için Visual Studio Araçları de güvenli olur.Belirli eklentileri nesne modeli koruyucusuyla karşılaşmadan çalıştırmak amacıyla eklentilere güvenme hakkında daha fazla bilgi için bkz: virüs önleme özellikleri yönetmek için Outlook'un kullandığı yöntemini belirt.

İzin Değişiklikleri Hemen Etki Göstermez

Eğer yönetici, belge veya derleme için izinleri ayarlarsa, kullanıcılar çıkmalı ve ardından tüm Office uygulamalarını bu değişikliklerin zorlanması için yeniden başlatmalıdır.

Microsoft Office uygulamalarını barındıran diğer uygulamalar yeni izinlerin zorlanmasını engelleyebilir.Kullanıcılar, güvenlik ayarları değiştiğinde, barındırılan veya tek başına Office kullanan tüm uygulamalardan çıkmalıdırlar.

Microsoft Office Sistemindeki Güven Merkezi Ayarları, Eklentileri veya Belge Düzeyi Özelleştirmelerini Etkilemez

Kullanıcılar, Güven Merkezi içindeki seçeneği ayarlayarak eklentilerin yüklenmesini engelleyebilir.Ancak, uygulama düzeyi eklentilerini ve Visual Studio'da Office çözümleri kullanılarak oluşturulan belge düzeyi özelleştirmeleri bu güven ayarlarından etkilenmez.

Eğer kullanıcı eklentilerin yüklenmesini, Güven Merkezi'ni kullanarak engellerse, aşağıdaki eklenti türleri yüklenmez:

  • Yönetilen ve yönetilmeyen COM eklentileri.

  • Yönetilen ve yönetilmeyen belgeler.

  • Yönetilen ve yönetilmeyen Automation eklentileri.

  • Yönetilen ve yönetilmeyen gerçek zamanlı veri bileşenleri.

Aşağıdaki yordamlar, kullanıcıların nasıl kullanabileceğinizi açıklar Güven Merkezi eklentileri Microsoft yüklenmesini sınırlamak için Office 2013 ve Microsoft Office 2010.Bu yordamları eklentileri Visual Studio'daki Office geliştirme araçları kullanılarak oluşturulmuş veya özelleştirmeleri etkilemez.

Microsoft Office 2010 ve Microsoft'deki eklentileri devre dışı bırakmak için Office 2013 uygulamalar

  1. Seçim Dosya sekme.

  2. Seçim ApplicationName seçenekleri düğmesi.

  3. Kategoriler bölmesinde seçin Güven Merkezi.

  4. Ayrıntılar bölmesinde seçin Güven Merkezi ayarları.

  5. Kategoriler bölmesinde seçin Add-ins.

  6. Detaylar bölmesinde, Uygulama Eklentisinin Güvenilir Yayımcı Tarafından İmzalanması Gerekir'i veya Tüm Uygulama Eklentilerini Devre Dışı Bırak'ı seçin.

Ayrıca bkz.

Diğer Kaynaklar

Office Çözümleri Güvenliğini Sağlama