Rumah pembangunan bahagian belakang Tutorial XML/RSS 详细介绍Web安全之XML注入的示例代码

详细介绍Web安全之XML注入的示例代码

Mar 08, 2017 pm 04:48 PM

XML注入攻击,和SQL注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。 XML是存储数据的一种方式,如果在修改或者查询时,没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。

攻击

下面是一个保存注册用户信息为XML格式的例子:

final String GUESTROLE = "guest_role";
...
//userdata是准备保存的xml数据,接收了name和email两个用户提交来的数据。
String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                request.getParameter("name")+
                "</name><email>"+
                request.getParameter("email")+
                "</email></USER>";
//保存xml
userDao.save(userdata);
Salin selepas log masuk

可以看到,这段代码没有进行任何的过滤操作。一个普通用户注册后,会产生这样一条数据记录:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com
    </email>
</USER>
Salin selepas log masuk

攻击者输入自己email时,可以输入如下代码:

user1@a.com</email></USER><USER role="admin_role"><name>lf</name><email>user2@a.com
Salin selepas log masuk

最终用户注册后,数据就变成了:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com</email>
</USER>
<USER role="admin_role">
    <name>lf</name>
    <email>user2@a.com
    </email>
</USER>
Salin selepas log masuk

可以看到,多出了一条role=“admin_role”的管理员lf。达到攻击目的。

防御

还是那句老话,有攻击就有防御。防御的原理其实也很简单,就是对关键字符串进行转义:

& --> &
 < --> <
 > --> >
 " --> "
 &#39; --> &#39;
Salin selepas log masuk

在XML保存和展示之前,对数据部分,单独做转义即可:

String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                StringUtil.xmlencode(request.getParameter("name"))+
                "</name><email>"+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "</email></USER>";
Salin selepas log masuk

这样就解决啦。


Atas ialah kandungan terperinci 详细介绍Web安全之XML注入的示例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bolehkah saya membuka fail XML menggunakan PowerPoint? Bolehkah saya membuka fail XML menggunakan PowerPoint? Feb 19, 2024 pm 09:06 PM

Bolehkah fail XML dibuka dengan PPT? XML, Extensible Markup Language (Extensible Markup Language), ialah bahasa markup universal yang digunakan secara meluas dalam pertukaran data dan penyimpanan data. Berbanding dengan HTML, XML lebih fleksibel dan boleh menentukan tag dan struktur datanya sendiri, menjadikan penyimpanan dan pertukaran data lebih mudah dan bersatu. PPT, atau PowerPoint, ialah perisian yang dibangunkan oleh Microsoft untuk membuat pembentangan. Ia menyediakan cara yang komprehensif untuk

Tukar data XML kepada format CSV dalam Python Tukar data XML kepada format CSV dalam Python Aug 11, 2023 pm 07:41 PM

Tukar data XML dalam Python kepada format CSV XML (ExtensibleMarkupLanguage) ialah bahasa penanda boleh diperluas yang biasa digunakan untuk penyimpanan dan penghantaran data. CSV (CommaSeparatedValues) ialah format fail teks dipisahkan koma yang biasa digunakan untuk import dan eksport data. Semasa memproses data, kadangkala data XML perlu ditukar kepada format CSV untuk analisis dan pemprosesan yang mudah. Python adalah yang kuat

Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Aug 08, 2023 pm 12:46 PM

Python menghuraikan aksara khas dan jujukan melarikan diri dalam XML XML (eXtensibleMarkupLanguage) ialah format pertukaran data yang biasa digunakan untuk memindahkan dan menyimpan data antara sistem yang berbeza. Semasa memproses fail XML, anda sering menghadapi situasi yang mengandungi aksara khas dan urutan melarikan diri, yang boleh menyebabkan ralat penghuraian atau salah tafsiran data. Oleh itu, apabila menghuraikan fail XML menggunakan Python, kita perlu memahami cara mengendalikan aksara khas dan urutan melarikan diri ini. 1. Watak istimewa dan

Cara mengendalikan format data XML dan JSON dalam pembangunan C# Cara mengendalikan format data XML dan JSON dalam pembangunan C# Oct 09, 2023 pm 06:15 PM

Cara mengendalikan format data XML dan JSON dalam pembangunan C# memerlukan contoh kod khusus Dalam pembangunan perisian moden, XML dan JSON ialah dua format data yang digunakan secara meluas. XML (Extensible Markup Language) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data, manakala JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Dalam pembangunan C#, kami selalunya perlu memproses dan mengendalikan data XML dan JSON Artikel ini akan memfokuskan pada cara menggunakan C# untuk memproses kedua-dua format data ini dan melampirkan

Menggunakan Python untuk melaksanakan pengesahan data dalam XML Menggunakan Python untuk melaksanakan pengesahan data dalam XML Aug 10, 2023 pm 01:37 PM

Menggunakan Python untuk melaksanakan pengesahan data dalam XML Pengenalan: Dalam kehidupan sebenar, kita sering berurusan dengan pelbagai data, antaranya XML (Extensible Markup Language) ialah format data yang biasa digunakan. XML mempunyai kebolehbacaan dan kebolehskalaan yang baik, dan digunakan secara meluas dalam pelbagai bidang, seperti pertukaran data, fail konfigurasi, dsb. Semasa memproses data XML, kami selalunya perlu mengesahkan data untuk memastikan integriti dan ketepatan data. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan pengesahan data dalam XML dan memberikan yang sepadan

Tukar POJO kepada XML menggunakan perpustakaan Jackson di Jawa? Tukar POJO kepada XML menggunakan perpustakaan Jackson di Jawa? Sep 18, 2023 pm 02:21 PM

Jackson ialah perpustakaan berasaskan Java yang berguna untuk menukar objek Java kepada JSON dan JSON kepada objek Java. JacksonAPI lebih pantas daripada API lain, memerlukan kawasan memori yang kurang dan sesuai untuk objek besar. Kami menggunakan kaedah writeValueAsString() kelas XmlMapper untuk menukar POJO kepada format XML, dan tika POJO yang sepadan perlu dihantar sebagai parameter kepada kaedah ini. Sintaks publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

Adakah PHP front-end atau back-end dalam pembangunan web? Adakah PHP front-end atau back-end dalam pembangunan web? Mar 24, 2024 pm 02:18 PM

PHP tergolong dalam bahagian belakang dalam pembangunan web. PHP ialah bahasa skrip sebelah pelayan, terutamanya digunakan untuk memproses logik sebelah pelayan dan menjana kandungan web dinamik. Berbanding dengan teknologi bahagian hadapan, PHP lebih banyak digunakan untuk operasi bahagian belakang seperti berinteraksi dengan pangkalan data, memproses permintaan pengguna dan menjana kandungan halaman. Seterusnya, contoh kod khusus akan digunakan untuk menggambarkan aplikasi PHP dalam pembangunan back-end. Mula-mula, mari kita lihat contoh kod PHP mudah untuk menyambung ke pangkalan data dan menanyakan data:

Bagaimana untuk mendayakan akses pentadbiran daripada UI web kokpit Bagaimana untuk mendayakan akses pentadbiran daripada UI web kokpit Mar 20, 2024 pm 06:56 PM

Kokpit ialah antara muka grafik berasaskan web untuk pelayan Linux. Ia bertujuan terutamanya untuk memudahkan pengurusan pelayan Linux untuk pengguna baharu/pengguna pakar. Dalam artikel ini, kami akan membincangkan mod akses Cockpit dan cara menukar akses pentadbiran kepada Cockpit daripada CockpitWebUI. Topik Kandungan: Mod Kemasukan Kokpit Mencari Mod Akses Kokpit Semasa Dayakan Capaian Pentadbiran untuk Kokpit daripada CockpitWebUI Melumpuhkan Capaian Pentadbiran untuk Kokpit daripada CockpitWebUI Kesimpulan Mod Kemasukan Kokpit Kokpit mempunyai dua mod capaian: Capaian Terhad: Ini adalah lalai untuk mod capaian kokpit. Dalam mod akses ini anda tidak boleh mengakses pengguna web dari kokpit

See all articles