Menggunakan berbagai metode pelarian

8

Saya perhatikan kelas vendor/magento/framework/Escaper.phpyang berisi beberapa metode keamanan berguna yang digunakan di dalam (terutama) templat. Beberapa dari mereka cukup umum ( escapeHtml()), tetapi beberapa dari mereka sulit ditemui.

  1. Metode apa dan escapeXssInUrl()sebenarnya?
  2. Dalam hal metode escapeJsQuote()- di mana tempat kutipan ini dapat ditemukan? Hanya inline jsin templates?
  3. Adakah yang memiliki penjelasan yang jelas kapan semua metode harus digunakan (contoh praktis)?
  4. Apa perbedaan antara escapeUrl()dan escapeXssInUrl()dan jika yang kedua memberi kita keamanan yang lebih baik, mengapa tidak selalu menggunakan yang kedua alih-alih melarikan diri hanya karakter html?
  5. escapeQuote()harus digunakan misalnya untuk menggemakan beberapa variabel dalam situasi seperti ini <div value="<?php echo[di sini?] $value?>"></div>?
Bartosz Kubicki
sumber

Jawaban:

3

Sebagian besar fungsi untuk langkah-langkah Keamanan terhadap serangan XSS.

escapeXssInUrl()Metode Hapus javascript:, vbscript:, data:kata-kata dari url dan digunakan seperti

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1 Anda dapat menghindari kutipan dalam javascript menggunakan $this->jsQuoteEscape ($item->getName());Mahento 2 yang dapat Anda lakukan dengan menggunakan yang samaescapeJsQuote

escapeUrl() sebenarnya memanfaatkan htmlspecialchars dengan parameter yang disarankan untuk keluar dari HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Anda dapat menemukan informasi lebih lanjut dengan dokumentasi resmi Magento 2 .

Krishna ijjada
sumber
Bisakah Anda membedakan antara escapeUrl()dan escapeXssInUr()l? Perlu diperhatikan bahwaThe upcoming release of Magento 2.2 will deprecate these functions. Please check back on this page after the 2.2 release for updated documentation on new escape functions.
Bartosz Kubicki
3

Ada entri yang bermanfaat di DevDocs tentang keamanan template: Langkah-langkah keamanan terhadap serangan XSS

Re escapeXssInUrl: Fungsi escapeUrlpanggilan escapeXssInUrlinternal plus escapeHtmlsesudahnya. Juga Magento menggunakan escapeUrlinternal.

Pastikan untuk memeriksa fungsi pelarian baru setelah Magento 2.2. keluar karena akan ada yang baru datang:

Rilis Magento 2.2 yang akan datang akan mencabut fungsi-fungsi ini.

Silakan periksa kembali halaman ini setelah rilis 2.2 untuk dokumentasi yang diperbarui pada fungsi pelarian baru.

Dan Anda mungkin juga tertarik untuk melihat presentasi saya tentang ini di sini: Penanganan input dan output yang aman - Meet Magento Romania 2016

Anna Völkl
sumber
sebenarnya saya telah menyaksikan pelatihan Anda tentang Mage Titans Italia dan saya ingin mengklarifikasi beberapa informasi dan itulah salah satu alasan pertanyaan :)! youtube.com/watch?v=TBSr5Esb-8M Itulah yang saya perhatikan Itu yang juga saya perhatikan escapeXssInUrl()- jadi haruskah saya menggunakan escapeUrl()insted? 'Aturan validasi Eav Backedn' - Saya kira mereka hanya menggunakan secara otomatis dan saya sudah menggunakannya? Atau haruskah menerapkannya di tempat input ditambahkan?
Bartosz Kubicki
1
Saya pikir lebih baik digunakan escapeUrldaripada escapeXssInUrlkarena ini disebut internal: github.com/magento/magento2/blob/…
Anna Völkl
Saya belum memperhatikan itu - itu benar!
Bartosz Kubicki