Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melarikan Diri dengan Selamat Watak untuk Panggilan os.system()?

Bagaimana untuk Melarikan Diri dengan Selamat Watak untuk Panggilan os.system()?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 20:39:02421semak imbas

How to Safely Escape Characters for os.system() Calls?

Escape Characters for os.system() Calls

Apabila menggunakan os.system(), memastikan pelarian nama fail dan argumen dengan betul adalah penting . Berikut ialah penyelesaian yang menangani isu ini dan menyediakan sokongan untuk berbilang sistem pengendalian dan cengkerang, terutamanya bash.

Menggunakan Petikan

Pendekatan yang paling mudah dan selamat adalah dengan menyertakan arahan dan hujah dalam petikan berganda atau tunggal:

os.system("my_command 'argument with spaces'")

Meloloskan diri Menggunakan shlex atau paip

Jika tanda petikan tidak sesuai, modul shlex atau paip boleh digunakan untuk melarikan diri aksara:

  • shlex.quote(string): Fungsi ini melepaskan aksara khas dalam rentetan, menjadikannya selamat untuk dihantar ke bash.
  • pipes.quote(string): Serupa kepada shlex.quote(), tetapi untuk versi Python yang lebih lama (menyokong kedua-dua Python 2 dan 3).

Contoh Penggunaan

Katakan anda mahu menjalankan arahan "cat input.txt | grep 'find something' | sort > output.txt" menggunakan os.system(). Menggunakan shlex.quote(), kodnya ialah:

import shlex

cmd = "cat {} | grep '{}' | sort > {}".format(
    shlex.quote("input.txt"),
    shlex.quote("find something"),
    shlex.quote("output.txt"),
)
os.system(cmd)

Nota tentang Keselamatan

Sementara os.system() menawarkan cara yang cepat dan langsung untuk melaksanakan perintah sistem, adalah penting untuk mempertimbangkan potensi kelemahan keselamatan. Pastikan input yang dijana pengguna atau tidak dipercayai disahkan dan dibersihkan dengan betul sebelum menggunakan os.system().

Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri dengan Selamat Watak untuk Panggilan os.system()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn