Parser Penurunan Harga yang Lebih Baik di PHP — demo
Instal paket komposer:
composer require erusev/parsedown
Atau unduh rilis terbaru dan sertakan Parsedown.php
$ Parsedown = new Parsedown ();
echo $ Parsedown -> text ( ' Hello _Parsedown_! ' ); # prints : < p > Hello < em > Parsedown </ em >!</ p >
Anda juga dapat mengurai penurunan harga sebaris saja:
echo $ Parsedown -> line ( ' Hello _Parsedown_! ' ); # prints : Hello < em > Parsedown </ em >!
Contoh lainnya di wiki dan tutorial video ini.
Parsedown mampu keluar dari input pengguna dalam HTML yang dihasilkannya. Selain itu Parsedown akan menerapkan sanitasi pada vektor skrip tambahan (seperti tujuan tautan skrip) yang diperkenalkan oleh sintaksis penurunan harga itu sendiri.
Untuk memberi tahu Parsedown bahwa ia memproses masukan pengguna yang tidak tepercaya, gunakan perintah berikut:
$ Parsedown -> setSafeMode ( true );
Jika sebaliknya, Anda ingin mengizinkan HTML dalam masukan pengguna yang tidak tepercaya, namun tetap ingin keluaran bebas dari XSS, disarankan agar Anda menggunakan pembersih HTML yang mengizinkan tag HTML dimasukkan ke dalam daftar putih, seperti HTML Purifier.
Dalam kedua kasus tersebut, Anda harus benar-benar mempertimbangkan untuk menggunakan langkah-langkah pertahanan yang mendalam, seperti menerapkan Kebijakan Keamanan Konten (fitur keamanan browser) sehingga halaman Anda kemungkinan besar akan aman bahkan jika penyerang menemukan kerentanan di salah satu kerentanan pertama. garis pertahanan di atas.
Mode aman tidak selalu memberikan hasil yang aman saat menggunakan ekstensi untuk Parsedown. Ekstensi harus dievaluasi sendiri untuk menentukan keamanan spesifiknya terhadap XSS.
PERINGATAN: Metode ini tidak aman dari XSS!
Jika Anda ingin keluar dari HTML dalam input tepercaya, Anda dapat menggunakan yang berikut ini:
$ Parsedown -> setMarkupEscaped ( true );
Berhati-hatilah karena ini masih memungkinkan pengguna untuk memasukkan vektor skrip yang tidak aman, misalnya: [xss](javascript:alert%281%29)
.
Bagaimana cara kerja Parsedown?
Ia mencoba membaca Markdown seperti manusia. Pertama, ia melihat garisnya. Ini tertarik pada bagaimana garis dimulai. Ini membantunya mengenali blok. Misalnya, ia mengetahui bahwa jika sebuah baris dimulai dengan a -
maka mungkin baris tersebut termasuk dalam daftar. Setelah mengenali blok tersebut, ia melanjutkan ke konten. Saat dibaca, ia memperhatikan karakter khusus. Ini membantunya mengenali elemen sebaris (atau sebaris).
Kami menyebut pendekatan ini "berbasis garis". Kami percaya bahwa Parsedown adalah parser Markdown pertama yang menggunakannya. Sejak rilis Parsedown, pengembang lain telah menggunakan pendekatan yang sama untuk mengembangkan parser Markdown lainnya dalam PHP dan bahasa lain.
Apakah ini sesuai dengan CommonMark?
Ini melewati sebagian besar tes CommonMark. Sebagian besar tes yang tidak lulus menangani kasus-kasus yang jarang terjadi. Namun, seiring dengan semakin matangnya CommonMark, kepatuhan akan meningkat.
Siapa yang menggunakannya?
Kerangka Laravel, Bolt CMS, Grav CMS, Herbie CMS, Kirby CMS, Oktober CMS, Pico CMS, Statamic CMS, phpDocumentor, RaspberryPi.org, Demo Symfony dan banyak lagi.
Apa yang bisa saya bantu?
Gunakan, beri bintang, bagikan, dan jika Anda merasa murah hati, berdonasi.
Apa lagi yang harus saya ketahui?
Saya juga membuat Nota — aplikasi catatan yang dirancang untuk file Markdown lokal.