Rumah >pembangunan bahagian belakang >Tutorial Python >Sejauh Mana Selamat Menggunakan `eval()` Python dengan Untrusted Strings?
Implikasi Keselamatan eval() Python dengan Rentetan Tidak Dipercayai
Apabila menilai rentetan Python yang tidak dipercayai menggunakan eval(), beberapa risiko keselamatan timbul:
1. eval(rentetan, {"f": Foo()}, {})
Ini tidak selamat. Melalui tika Foo, seseorang boleh mengakses terbina dalam seperti "os" dan "sys," yang berpotensi menjejaskan sistem.
2. eval(rentetan, {}, {})
Ini juga tidak selamat. Walaupun tanpa menghantar kamus secara jelas, terbina dalam seperti "len" dan "senarai" boleh digunakan untuk mencapai API lain yang tidak selamat.
3. Tidak membenarkan Terbina dalam
Tiada cara mudah untuk menghalang sepenuhnya kehadiran terbina dalam dalam konteks eval(). Tampalan pada penterjemah Python diperlukan.
Risiko Tambahan:
Rentetan berniat jahat seperti "[0] * 100000000" boleh menyebabkan kehabisan sumber. Melaksanakan ungkapan sewenang-wenangnya boleh menjejaskan keselamatan data pengguna dan sistem.
Pendekatan Alternatif:
Daripada menggunakan eval(), pertimbangkan kaedah lain untuk mengendalikan data yang tidak dipercayai. Contohnya:
Atas ialah kandungan terperinci Sejauh Mana Selamat Menggunakan `eval()` Python dengan Untrusted Strings?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!