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 9 | No |
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)));