PHP和XSS跨站攻击_PHP

Jun 01, 2016 pm 12:29 PM
pattern search the val menyerang

其实这个话题很早就想说说了,发现国内不少PHP站点都有XSS漏洞。今天偶然看到PHP5的一个XSS漏洞,在此小结一下。顺便提醒,使用PHP5的朋友最好打下补丁,或者升级一下。

如果你不懂什么是XSS,可以看这里,或者这里(中文的也许会好懂一些)。

国内不少论坛都存在跨站脚本漏洞,例如这里 有一个Google Hack XSS的攻击例子,针对的是Discuz 4.0.0RC3。国外也很多这样的例子,甚至Google也出现过,不过在12月初时修正了。跨站攻击很容易就可以构造,而且非常隐蔽,不易被查觉(通常盗取信息后马上跳转回原页面)。
如何攻击,在此不作说明(也不要问我),主要谈谈如何防范。首先,跨站脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险拦截。针对非法的HTML代码包括单双引号等,可以使用htmlentities() 。

$str = "A 'quote' is bold";

// Outputs: A 'quote' is bold
echo htmlentities($str);

// Outputs: A 'quote' is bold
echo htmlentities($str, ENT_QUOTES);
?>


这样可以使非法的脚本失效。

但是要注意一点,htmlentities()默认编码为 ISO-8859-1,如果你的非法脚本编码为其它,那么可能无法过滤掉,同时浏览器却可以识别和执行。这个问题我先找几个站点测试后再说。

这里提供一个过滤非法脚本的函数:

function RemoveXSS($val) {
// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
// this prevents some character re-spacing such as
// note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
$val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);

// straight replacements, the user should never need these since they're normal characters
// this prevents like PHP和XSS跨站攻击_PHP
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:? /={}[]-_|\'\\';
for ($i = 0; $i // ;? matches the ;, which is optional
// 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

// @ @ search for the hex values
$val = preg_replace('/([x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
// @ @ 0{0,7} matches '0' zero to seven times
$val = preg_replace('/({0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
}

// now the only remaining whitespace attacks are \t, \n, and \r
$ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
$ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
$ra = array_merge($ra1, $ra2);

$found = true; // keep replacing as long as the previous round replaced something
while ($found == true) {
$val_before = $val;
for ($i = 0; $i $pattern = '/';
for ($j = 0; $j if ($j > 0) {
$pattern .= '(';
$pattern .= '([x|X]0{0,8}([9][a][b]);?)?';
$pattern .= '|({0,8}([9][10][13]);?)?';
$pattern .= ')?';
}
$pattern .= $ra[$i][$j];
}
$pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in to nerf the tag
$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
if ($val_before == $val) {
// no replacements were made, so exit the loop
$found = false;
}
}
}
}

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.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Nota Pembangunan Vue: Elakkan Kerentanan dan Serangan Keselamatan Biasa Nota Pembangunan Vue: Elakkan Kerentanan dan Serangan Keselamatan Biasa Nov 22, 2023 am 09:44 AM

Vue ialah rangka kerja JavaScript popular yang digunakan secara meluas dalam pembangunan web. Memandangkan penggunaan Vue terus meningkat, pembangun perlu memberi perhatian kepada isu keselamatan untuk mengelakkan kelemahan dan serangan keselamatan biasa. Artikel ini akan membincangkan perkara keselamatan yang perlu diberi perhatian dalam pembangunan Vue untuk membantu pembangun melindungi aplikasi mereka daripada serangan dengan lebih baik. Mengesahkan input pengguna Dalam pembangunan Vue, mengesahkan input pengguna adalah penting. Input pengguna ialah salah satu sumber kelemahan keselamatan yang paling biasa. Apabila mengendalikan input pengguna, pembangun hendaklah sentiasa

2 bulan kemudian, robot humanoid Walker S boleh melipat pakaian 2 bulan kemudian, robot humanoid Walker S boleh melipat pakaian Apr 03, 2024 am 08:01 AM

Editor Laporan Kuasa Mesin: Wu Xin Versi domestik robot humanoid + pasukan model besar menyelesaikan tugas operasi bahan fleksibel yang kompleks seperti melipat pakaian buat kali pertama. Dengan pelancaran Figure01, yang mengintegrasikan model besar berbilang modal OpenAI, kemajuan berkaitan rakan domestik telah menarik perhatian. Baru semalam, UBTECH, "stok robot humanoid nombor satu" China, mengeluarkan demo pertama robot humanoid WalkerS yang disepadukan secara mendalam dengan model besar Baidu Wenxin, menunjukkan beberapa ciri baharu yang menarik. Kini, WalkerS, diberkati oleh keupayaan model besar Baidu Wenxin, kelihatan seperti ini. Seperti Rajah01, WalkerS tidak bergerak, tetapi berdiri di belakang meja untuk menyelesaikan satu siri tugasan. Ia boleh mengikut perintah manusia dan melipat pakaian

Serangan CSRF dalam PHP Serangan CSRF dalam PHP May 25, 2023 pm 08:31 PM

Dengan pembangunan Internet yang berterusan, semakin banyak aplikasi web Namun, isu keselamatan juga semakin menarik perhatian. Serangan CSRF (CrossSiteRequestForgery, pemalsuan permintaan silang tapak) ialah masalah keselamatan rangkaian biasa. Apakah serangan CSRF? Serangan CSRF yang dipanggil bermakna penyerang mencuri identiti pengguna dan melakukan operasi haram atas nama pengguna. Dalam istilah orang awam, ini bermakna penyerang menggunakan status log masuk pengguna untuk melakukan beberapa operasi haram tanpa pengetahuan pengguna.

Penyelesaian terbaik untuk Nginx untuk menghalang serangan skrip Penyelesaian terbaik untuk Nginx untuk menghalang serangan skrip Jun 10, 2023 pm 10:55 PM

Penyelesaian terbaik untuk Nginx untuk menghalang serangan skrip merujuk kepada tingkah laku penyerang menggunakan program skrip untuk menyerang tapak web sasaran untuk mencapai tujuan jahat. Serangan skrip datang dalam pelbagai bentuk, seperti suntikan SQL, serangan XSS, serangan CSRF, dll. Dalam pelayan web, Nginx digunakan secara meluas dalam proksi terbalik, pengimbangan beban, caching sumber statik dan aspek lain Apabila menghadapi serangan skrip, Nginx juga boleh memberikan permainan sepenuhnya kepada kelebihannya dan mencapai pertahanan yang berkesan. 1. Bagaimana Nginx melaksanakan serangan skrip dalam Ngin

Menggunakan kaedah Pattern.compile dalam Java Menggunakan kaedah Pattern.compile dalam Java Feb 18, 2024 pm 09:04 PM

Penggunaan fungsi Pattern.compile dalam Java Fungsi Pattern.compile dalam Java ialah kaedah yang digunakan untuk menyusun ungkapan biasa. Ungkapan biasa ialah alat pemadanan dan pemprosesan rentetan yang berkuasa yang boleh digunakan untuk mencari, menggantikan, mengesahkan rentetan dan operasi lain. Fungsi Pattern.compile membolehkan kami menyusun corak rentetan ke dalam objek Corak, yang kemudiannya boleh digunakan untuk melakukan satu siri operasi rentetan. Pattern.compi

Perkara yang perlu dilakukan jika alamat IP anda diserang Perkara yang perlu dilakukan jika alamat IP anda diserang Oct 24, 2023 pm 03:45 PM

Penyelesaian kepada serangan alamat IP termasuk menganalisis jenis serangan, menyediakan tembok api, menyekat alamat IP, mengasingkan pautan komunikasi, memberitahu agensi berkaitan, mengukuhkan perlindungan keselamatan, mengumpul bukti dan mengukuhkan latihan kesedaran keselamatan. Pengenalan terperinci: 1. Untuk menganalisis jenis serangan, anda perlu terlebih dahulu menganalisis jenis dan kaedah serangan untuk memahami tingkah laku dan tujuan penyerang 2. Tetapan firewall, dengan mengkonfigurasi peraturan firewall, anda boleh menyekat akses kepada IP yang diserang; 3. Penyekatan IP , jika trafik serangan sangat ganas dan serius menjejaskan operasi normal pelayan, anda boleh mempertimbangkan untuk menyekat pelayan yang diserang buat sementara waktu, dsb.

Syarikat Penyemak Imbas melancarkan Carian Arka: pengalaman carian yang dibantu AI dan ditingkatkan Syarikat Penyemak Imbas melancarkan Carian Arka: pengalaman carian yang dibantu AI dan ditingkatkan Feb 01, 2024 am 09:18 AM

Menurut berita pada 31 Januari, TheBrowserCompany baru-baru ini mengeluarkan aplikasi baharu yang dipanggil ArcSearch, yang menggunakan sepenuhnya teknologi AI dan bertujuan untuk membantu pengguna mendapatkan maklumat yang mereka perlukan dengan lebih cepat dan mudah. Ciri teras aplikasi ArcSearch ialah fungsi "Browseforme", yang dikuasakan oleh model daripada syarikat seperti OpenAI. Apabila pengguna mencari, fungsi ini secara automatik boleh membaca sekurang-kurangnya enam halaman web yang berkaitan, menyepadukan dan meringkaskan maklumat ini melalui teknologi AI, dan akhirnya memaparkannya kepada pengguna pada halaman yang baru direka bentuk. Halaman ini bukan sahaja mengandungi maklumat yang berkaitan dengan kata kunci carian, tetapi juga membahagikan kandungan kepada bahagian yang berbeza untuk menjadikannya lebih jelas untuk pengguna.

Kelas PatternSyntaxException dalam ungkapan biasa Java Kelas PatternSyntaxException dalam ungkapan biasa Java Sep 11, 2023 pm 07:37 PM

Kelas PatternSyntaxException mewakili pengecualian tidak ditandai yang dilemparkan apabila ralat sintaks berlaku dalam rentetan ungkapan biasa. Kelas ini mengandungi tiga kaedah utama, iaitu - getDescription() - mengembalikan perihalan ralat. getIndex() - Mengembalikan indeks ralat. getPattern() - Mengembalikan corak ungkapan biasa di mana ralat berlaku. getMessage() - Mengembalikan mesej lengkap yang mengandungi ralat, indeks, corak ungkapan biasa di mana ralat berlaku, dan ralat dalam corak yang ditunjukkan. Contoh Demonstrasi masa nyata importjava.util.Scanner;importjava.util.regex.Matcher;i

See all articles