Bagikan melalui


CA3061: Jangan tambahkan skema menurut URL

Properti Nilai
ID Aturan CA3061
Judul Jangan tambahkan skema menurut URL
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Overload XmlSchemaCollection.Add(String, String) menggunakan XmlUrlResolver untuk menentukan skema XML dalam formulir URI. Jika String URI tercemar, hal tersebut dapat menyebabkan penguraian skema XML yang berbahaya, yang memungkinkan penyertaan bom XML dan entitas eksternal berbahaya. Hal ini dapat memungkinkan penyerang jahat melakukan penolakan layanan, pengungkapan informasi, atau serangan pemalsuan permintaan sisi server.

Deskripsi aturan

Jangan gunakan overload yang tidak aman dari metode Add karena dapat menyebabkan referensi eksternal yang berbahaya.

Cara memperbaiki pelanggaran

  • Jangan gunakan XmlSchemaCollection.Add(String, String).

Kapan harus menekan peringatan

Sembunyikan aturan ini jika yakin XML Anda tidak menyelesaikan referensi eksternal berbahaya.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

Pelanggaran

Sampel kode semu berikut mengilustrasikan pola yang terdeteksi oleh aturan ini. Jenis parameter kedua adalah string.

using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");

Solusi

using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", new XmlTextReader(new FileStream(""xmlFilename"", FileMode.Open)));