Pegjs: Tambahkan alternatif non-Eval untuk kompatibilitas Kebijakan Keamanan Konten

Dibuat pada 24 Okt 2019  ·  12Komentar  ·  Sumber: pegjs/pegjs

Refactoring: hapus "eval" dari perpustakaan

  • Laporan Bug: Kebijakan-Keamanan-Konten

Prasyarat

  • **Dapatkah Anda mereproduksi masalah?: YA
  • **Apakah Anda mencari masalah repositori?: YA
  • **Apakah Anda memeriksa forum?: tidak
  • **Apakah Anda melakukan pencarian web (google, yahoo, dll)?: ya

Keterangan

Langkah-langkah untuk Reproduksi

1.Server set header: Content-Security-Policy: default-src https:

  1. Muat vendor.js ke klien
  2. Mencoba .parse() dengan pegjs:
    Kesalahan (alat dev chrome): Menolak untuk menjalankan skrip sebaris karena melanggar arahan Kebijakan Keamanan Konten berikut: "script-src 'self' 'unsafe-eval'". Baik kata kunci 'unsafe-inline', hash ('sha256-NALaJ5yL9XVYFNSX8jAdayjJGG7VDRjzVeu1AYf0Kx0='), atau nonce ('nonce-...') diperlukan untuk mengaktifkan eksekusi inline.

Perangkat lunak

  • PEG.js: ^0.10.0
  • Node.js: 8.12
  • NPM atau Benang: 6.41
  • Peramban: Chrome 77, Safari, Firefox
  • OS: Mac OS, Ubuntu
discussion feature not-a-bug task

Komentar yang paling membantu

Saya pikir ada baiknya menambahkan alternatif non- eval untuk kompatibilitas Kebijakan Keamanan Konten; akan melihat ini di beberapa titik sebelum 0,12 dengan menambahkan bundel lain (mungkin bernama dist/peg.csp.js ) melalui file entri baru untuk dikonsumsi oleh Webpack saja

Semua 12 komentar

Ini tidak terlihat seperti masalah dengan pegjs.
Apakah Anda memuat skrip Anda dari sumber yang tidak aman (http?)

Saya dapat mereproduksi ini pada protokol http dan https. Ini semua tentang kebijakan keamanan. Jika kode menggunakan fungsi eval, maka tidak akan dieksekusi, browser akan memblokir eksekusinya
Saya punya solusi untuk itu, tetapi itu tidak aman.
Rincian lebih lanjut tentang kebijakan keamanan:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

Tautan Anda untuk header http. Anda mengendalikan header apa pun yang Anda kirim di server Anda.

Ya, header ini terkait dengan keamanan, tetapi aplikasi mana di tahun 2020 yang tidak akan memikirkan keamanan. Ini adalah praktik yang cukup umum untuk menggunakan pendekatan ini dalam aplikasi web modern.
Saya sedikit mencari di Google dan memperhatikan bahwa perpustakaan populer telah membuat pembaruan ini.
Jadi, saya tidak berpikir bahwa banyak aplikasi akan mengabaikan keamanan di masa depan, dan pilih alat yang sesuai yang akan konsisten dengan ini.

Pegjs adalah generator parser, ini adalah jenis lib JS yang terpisah,
Bagaimana JS di dalam tata bahasa bekerja tanpa eval ing itu?

Saya tidak berpikir itu adalah solusi yang baik untuk generator parser. Performa cukup penting di sini.

Saya kehilangan konteks dalam masalah ini. Adakah yang bisa menunjuk pada bagian kode yang relevan?

Saya pikir ada baiknya menambahkan alternatif non- eval untuk kompatibilitas Kebijakan Keamanan Konten; akan melihat ini di beberapa titik sebelum 0,12 dengan menambahkan bundel lain (mungkin bernama dist/peg.csp.js ) melalui file entri baru untuk dikonsumsi oleh Webpack saja

Mungkin tidak membuatnya hanya webpack. Masalah ini tidak spesifik untuk webpack, dan webpack dengan cepat menurun, mendukung rollup dan parsel

Sejujurnya, tidak ada alasan khusus untuk meninggalkan eval di tempatnya jika ada alternatif yang disediakan. Ini tidak seperti itu entah bagaimana lebih cepat, seperti yang disarankan di atas. Justru sebaliknya

Ini tidak boleh ditandai not-a-bug . Faktanya, ini adalah bug yang parah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat