Ada banyak file templat seperti ini views-view-fields--magazine--magazine.tpl.php
di situs web saya. bagaimana dan kapan saya harus menggunakan filter_xss () dan check_plain () untuk meningkatkan keamanan? misalnya ini kodenya:
<div>
<div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
<div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
<div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>
Bagaimana saya bisa menerapkan fungsi-fungsi itu di dalamnya?
filter_xss()
ketika Anda ingin memfilter XSS dari konten yang berpotensi berbahaya (yaitu konten dari pengguna yang tidak dipercaya), dancheck_plain()
ketika Anda ingin melarikan diri karakter khusus HTML dari stringJawaban:
Pertama, baca tentang ini di API Drupal:
Jadi
check_plain()
mengkodekan karakter khusus yang memiliki arti khusus dalam HTML (seperti<
dan&
) ke dalam entitas teks biasa (yaitu<
dan&
masing - masing) yang akan membuat ini diterjemahkan secara harfiah (tidak diartikan sebagai HTML) ketika string yang kemudian ditampilkan sebagai bagian dari halaman dengan Markup HTML. Fungsi inifilter_xss()
memfilter string HTML untuk mencegah kerentanan lintas-situs-scripting (XSS). Itu melakukan empat hal:Kedua fungsi digunakan untuk membersihkan data dari pengguna untuk memastikan bahwa setiap injeksi pengguna dinetralkan sebelum data diberikan di situs Anda.
Anda tidak pernah melewati string yang sama melalui keduanya .
Jika Anda menggunakan
check_plain()
maka string yang diteruskan ke fungsi seharusnya digunakan sebagai teks biasa (bukan HTML). Makafilter_xss()
tidak diperlukan, karenacheck_plain()
akan selalu membuat teks string sederhana.Jika Anda menggunakan
filter_xss()
, maka string yang diteruskan ke fungsi seharusnya HTML, dancheck_plain()
akan mengacaukannya.Ketika saya melihat templat yang Anda gunakan sebagai contoh, tampak bagi saya seolah ketiga bidang yang diteruskan
print()
berasal dari konten yang sudah disanitasi, dan tidak perlu sanitasi lagi.Namun, jika Anda membuat modul Anda sendiri yang mengumpulkan input pengguna tanpa melewati itu melalui filter teks "aman" seperti "Filtered HTML" atau "Plain", Anda harus menggunakan fungsi-fungsi ini untuk keperluan sanitasi.
sumber
plain text