Kelemahan keselamatan biasa JavaScript dan kemahiran teknologi_javascript pengesanan automatik

WBOY
Lepaskan: 2016-05-16 15:43:34
asal
1770 orang telah melayarinya

Kata Pengantar

Dengan pembangunan Web2.0 dan populariti rangka kerja Ajax, aplikasi Web klien kaya (Rich Internet Applications, RIA) semakin meningkat dari hari ke hari, dan semakin banyak logik telah mula dipindahkan dari bahagian pelayan ke klien. Logik ini biasanya Semua ditulis menggunakan bahasa JavaScript. Tetapi malangnya, pembangun secara amnya tidak memberi banyak perhatian kepada keselamatan kod JavaScript. Menurut laporan trend jangka pertengahan IBM X-Force 2011, 40% daripada laman web Fortune 500 dan tapak web yang biasa diketahui mempunyai kelemahan keselamatan JavaScript. Artikel ini akan menunjukkan kepada pembaca kelemahan keselamatan JavaScript biasa dalam kombinasi dengan kod, bertujuan untuk membantu pembaca mengelakkan kelemahan keselamatan ini dalam kerja pengekodan harian. Selain itu, prinsip kelemahan keselamatan JavaScript sisi klien sedikit berbeza daripada kelemahan keselamatan bahagian pelayan Pada masa ini terdapat kesukaran teknikal utama dalam mengesan kelemahan keselamatan JavsScript secara automatik Artikel ini akan menggunakan kes untuk berkongsi dengan pembaca cara menggunakan ciri baharu teknologi IBM Rational AppScan Edisi Standard V8.0 (JavaScript Security Analyzer (JSA) mengesan kelemahan keselamatan JavaScript secara automatik.

Kerentanan keselamatan JavaScript biasa

Pada Disember 2010, IBM mengeluarkan kertas putih mengenai kelemahan keselamatan JavaScript sisi klien dalam aplikasi web, yang memperkenalkan tinjauan status keselamatan JavaScript yang dijalankan oleh Institut Penyelidikan Keselamatan IBM. Data sampel termasuk 675 tapak web, termasuk tapak web syarikat Fortune 500 dan 175 lagi tapak web terkenal, termasuk syarikat IT, syarikat perkhidmatan keselamatan aplikasi web, tapak rangkaian sosial, dsb. Untuk tidak menjejaskan operasi biasa tapak web ini, penyelidik menggunakan perangkak tidak mengganggu yang mengimbas hanya subset halaman yang boleh diakses tanpa log masuk, tidak lebih daripada 200 halaman setiap tapak. Halaman ini telah disimpan dan penyelidik menggunakan teknologi analisis keselamatan JavaScript IBM untuk menganalisis halaman ini di luar talian, memfokuskan pada skrip merentas tapak berasaskan DOM dan kelemahan pengalihan.

Hasil ujian adalah menakjubkan 14% daripada tapak web terkenal ini mempunyai masalah keselamatan JavaScript yang serius. Apa yang lebih menakjubkan ialah dengan kematangan teknologi analisis keselamatan JavaScript IBM, laporan pertengahan 2011 X-Force menunjukkan bahawa IBM menguji semula tapak web terkenal yang disebutkan di atas dan menemui lebih banyak kelemahan keselamatan, kira-kira 40% tapak web mempunyai keselamatan JavaScript. kelemahan.

Kod sumber rangka kerja keselamatan sejagat kebenaran peringkat perusahaan java SpringMVC mybatis atau hibernate ehcache shiro druid bootstrap HTML5

Artikel berikut akan menunjukkan kepada pembaca kelemahan keselamatan JavaScript biasa ini dalam kombinasi dengan kod, supaya pembaca dapat melihat isu keselamatan ini semasa proses pengekodan sebenar dan mengelakkan risiko ini seawal mungkin.

skrip merentas tapak berasaskan DOM

Kita semua pernah mendengar tentang XSS (Skrip Merentas Laman, juga dikenali sebagai serangan skrip merentas tapak), yang merujuk kepada penyerang memasukkan kod skrip berniat jahat (biasanya kod HTML dan JavaScript) ke dalam kod halaman web yang sah) dan kemudian menyerahkan meminta kepada pelayan, dan kemudian halaman respons pelayan ditanamkan dengan kod skrip hasad penyerang Penyerang boleh menggunakan kod skrip hasad ini untuk melakukan serangan seperti rampasan sesi. Skrip merentas tapak secara amnya dibahagikan kepada jenis reflektif dan berterusan: skrip merentas tapak reflektif berlaku apabila data permintaan diberikan tidak dikodkan dan tidak ditapis dalam halaman respons pelayan berterusan merujuk kepada data permintaan yang mengandungi kod berniat jahat Ia disimpan pada pelayan Aplikasi web. Setiap kali pengguna melawat halaman tertentu, kod berniat jahat akan dilaksanakan secara automatik. Terdapat dua cara utama untuk menangani skrip merentas tapak: pertama, jangan mempercayai sebarang input pengguna dan cuba gunakan teknologi senarai putih untuk mengesahkan parameter input kedua, melarikan diri daripada kandungan yang disediakan oleh pengguna semasa mengeluarkan;

Tetapi kurang diketahui bahawa terdapat jenis ketiga kerentanan skrip merentas tapak. Pada tahun 2005, Amit Klein menerbitkan kertas putih "Skrip Silang Tapak Berasaskan DOM atau XSS Jenis Ketiga" ("Skrip Silang Tapak Berasaskan DOM atau XSS Jenis Ketiga"), yang mendedahkan skrip merentas tapak berasaskan DOM kandungan tidak perlu bergantung pada respons sebelah pelayan Jika sesetengah halaman HTML menggunakan atribut elemen DOM seperti document.location, document.URL atau document.referer, penyerang boleh menggunakan atribut ini untuk menanam skrip berniat jahat untuk melaksanakan DOM-. rujukan silang berdasarkan serangan skrip tapak.

Di bawah ini kami akan menunjukkan prinsip skrip merentas tapak berasaskan DOM melalui halaman HTML yang sangat mudah. Katakan terdapat halaman HTML statik (ditunjukkan dalam Penyenaraian 1) yang memaparkan mesej mengalu-alukan pengguna untuk log masuk yang berjaya.

Senarai 1. Kod HTML dengan XSS berasaskan DOM

<HTML>
<TITLE>Welcome!</TITLE>
Hi
<SCRIPT>
 var pos=document.URL.indexOf("name=")+5;
 document.write(document.URL.substring(pos,document.URL.length));
</SCRIPT>
<BR>
Welcome to our system
…
</HTML>
Salin selepas log masuk

按照该页面 JavaScript 代码逻辑,它会接受 URL 中传入的 name 参数并展示欢迎信息,如清单 2 所示:

清单 2. 正常情况下的访问 URL

http://www.vulnerable.site/welcome.html?name=Jeremy

但如果恶意攻击者输入类似如下的脚本,见清单 3,该页面则会执行被注入的 JavaScript 脚本。

清单 3. 访问 URL 中注入脚本

http://www.vulnerable.site/welcome.html?name=

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan