Python kullanıcı girişi - Python'da kullanıcı girişi nasıl alınır?

Python'da Kullanıcıdan Giriş Almanın Yanlış Yolu (Ve Güvenli Alternatifi)

Ne zaman giriş() Yanlış Gidiyor

Bir Python dağıtım betiği bir konsol komutu istedi. Yanlış yazılan bir girdi, yanlış işlemi tetikledi ve üretim sürümünü bozdu. Python kullanıcı girdisinin tehlikesi işte burada yatıyor: Kontrol edilmemiş tek bir dize, enjeksiyona, veri kaybına veya mantık atlamasına neden olabilir. Bunun neden olduğunu ve hem açık kaynaklı hem de dahili projelerde Python kullanıcı girdisini nasıl güvenli bir şekilde ele alacağımızı inceleyelim.

İle ilgili sorun kullanıcı girişi() Python

MKS giriş() Python'daki fonksiyon basittir: Konsoldan metin okur ve bunu bir dize olarak döndürür. Doğrulama yok. Kontrol yok. Tek başına bakıldığında zararsız görünüyor. Ancak yapım senaryolarında, CI/CD İşlemlerde ve otomasyon araçlarında, ham Python kullanıcı girdisinin doğrudan komutlara veya fonksiyonlara aktarılması güvenlik açıklarına yol açar.

⚠️ Sadece eğitim amaçlı bir örnektir, işlevsel veya ticari amaçlı değildir.

Python'da kullanıcıdan güvenli bir şekilde nasıl girdi alacağınızı merak ediyorsanız, cevap basit: asla körü körüne güvenmeyin.

DevSecOps'ta Riskler ve Güvenli Yönetim Pipelines

Güvenli olmayan Python kullanıcı girdileri farklı alanlara sızabilir. Yazılım yaşam döngüsünün aşamaları:

  • CI/CD scriptler yapıtları dağıtan veya oluşturan
  • Dahili geliştirici araçları kontrol ortamları
  • Üçüncü taraf entegrasyonları Girişin güvenli olduğunu varsayan.

Eğer bir bağımlılık, Python'da kullanıcı girdisini doğrulama yapmadan işliyorsa, kodunuz güvenli olsa bile bu riski devralırsınız. Bu nedenle doğrulama, tüm kod genelinde tutarlı bir şekilde uygulanmalıdır. pipeline.

Örnek E-posta pipeline risk:

önleyici CI/CD uygulama:

Anahtar paket servisi olan restoran: Python'da kullanıcıdan güvenli bir şekilde girdi almayı bilmek işin sadece yarısı; otomatik uygulama ise işin tamamlanmasını sağlar. Güvenli olmayan kod asla üretim ortamına ulaşmaz.

Yaygın Saldırı Vektörleri

Güvenli olmayan Python kullanıcı girdileri "hatalı verilerden" daha fazlasına neden olabilir. Yaygın riskler şunlardır:

  • Komut EnjeksiyonuKullanıcı tarafından kontrol edilen verileri sistem komutlarına iletmek
  • Kod Enjeksiyonu: Girişten dinamik olarak oluşturulan kodun yürütülmesi

Mantıksal BypassKimlik doğrulamasını atlayarak veya özel olarak hazırlanmış girdiler aracılığıyla akışı değiştirerek.

Python'da ham kullanıcı girdisine güveniyorsanız, kontrolü kullanıcıya veya saldırgana teslim ediyorsunuz demektir.

Güvenli Alternatif: Giriş Verilerinin Doğrulanması ve Temizlenmesi

Amaç kaldırmak değil. giriş() Kodun tamamında amaç, Python kullanıcı girdisinin kritik işlemlere ulaşmadan önce doğrulanmasını sağlamaktır.

Python'da kullanıcıdan girdi almanın en güvenli yolu şudur:

  • Tür kontrollerini zorunlu kılın
  • İzin verilen değerler için beyaz listeler uygulayın.
  • Güvenli ayrıştırma kütüphaneleri kullanın, örneğin: tartışma hem de pidantik.

Hızlı karşılaştırma

senaryo Güvensiz Örnek Güvenli Örnek
Doğrudan kullanım input()
  # ⚠️ Educational example only  user_name = input("Enter username: ")  simulate_process(user_name)          
  import argparse  parser = argparse.ArgumentParser()  parser.add_argument("--username", type=str)  args = parser.parse_args()  process(args.username)          
Yapılandırılmış doğrulama
  # ⚠️ Educational example only  age = input("Enter your age: ")          
  from pydantic import BaseModel, ValidationError  class UserInput(BaseModel):      age: int  try:      data = UserInput(age=int(input("Enter your age: ")))  except ValidationError as e:      print("Invalid input:", e)          

Python'da kullanıcı girdisi için en iyi uygulamalar:

  • Türleri dönüştürün ve hataları ele alın (dene/hariç)
  • Bilinen değerler için beyaz listeler uygulayın.
  • Kullanım tartışma CLI için ve pidantik yapılandırılmış veriler için

Güvenli Olmayan Girişleri Tespit Etme ve Uygulama CI/CD Xygeni ile

Python kullanıcılarından gelen tüm güvensiz girdileri yakalamak için manuel inceleme yeterli değildir; otomasyon çok önemlidir. Gibi araçlar Xygeni Kullanıcı girdisi içeren Python kalıplarını, veri temizleme işlemi yapılmadan depolarda tarar. Entegre edildiğinde... CI/CDGüvenli olmayan girdi işleme tespit edilirse güvenlik görevi başarısız olur. Bu durum, sorun çözülene kadar korumalı dallara birleştirmeyi engeller.

senaryo Güvensiz Örnek Güvenli Örnek
Doğrudan kullanım input()
  # ⚠️ Educational example only — not functional  name = input("Enter username: ")  simulate_process(name)  # Simulated for demonstration          
  import argparse  parser = argparse.ArgumentParser()  parser.add_argument("--username", type=str)  args = parser.parse_args()  process(args.username)  # Validated by argparse          
Yapılandırılmış doğrulama
  # ⚠️ Educational example only — not functional  age = input("Enter your age: ")          
  from pydantic import BaseModel, ValidationError    class UserInput(BaseModel):      age: int    try:      data = UserInput(age=int(input("Enter your age: ")))  except ValidationError as e:      print("Invalid input:", e)          
CI/CD uygulama
  # Missing automated checks allows  # unsafe input patterns to slip in  # during reviews/merges.          
  jobs:    security_scan:      runs-on: ubuntu-latest      steps:        - uses: actions/checkout@v3        - name: Run Xygeni Scan          run: xygeni scan \            --rules detect-unsafe-input \            --fail-on-findings          

Nasıl çalışır:

  1. Xygeni, güvenli olmayan Python kullanıcı girdilerini tarar.
  2. Bulunması durumunda sıfırdan farklı bir çıkış kodu döndürür.
  3. CI/CD İşi başarısız olarak işaretler.
  4. Dal koruma özelliği, sorun çözülene kadar birleştirmeyi engeller.

Bu, Python'da kullanıcı girdisinin güvenli ve otomatik olarak nasıl alınacağını belirler.

Son Çıkarımlar

Python'da doğrulama yapılmadan kullanıcı girdilerine asla güvenmeyin. Tek bir güvensiz girdi bile yeterli değildir. giriş() Bu durum, güvenlik ihlallerine, dağıtım hatalarına veya sistemin tamamen ele geçirilmesine yol açabilir.

Hareket planı:

  • Doğrulamayı baştan yapın:  Tür dönüştürme, beyaz listeler ve benzeri kütüphaneleri uygulayın. tartışma or pidantik Kullanıcı girdisini işlemeden önce Python.
  • Algılamayı otomatikleştirme:  yapılandırmak pipelineGüvenli olmayan desenler bulunduğunda birleştirmeleri engellemek için kullanılır.
  • Güvenlik kapılarıyla uygulamayı sağlayın:  Xygeni gibi araçları entegre etmek için otomatik engelleme korunaklı dallarda.
  • Ekibinizi eğitin:  Herkesin Python'da kullanıcı girdisini güvenli bir şekilde nasıl alacağını bildiğinden ve doğrulama işlemini atlamanın risklerini anladığından emin olun.

Uygulama güvenliği üretim aşamasında başlamaz.Bu, ilk kod satırını yazdığınız anda başlar. Güvenli giriş işlemeyi varsayılan ayarınız yapın.

sca-tools-software-composition-analysis-tools
Yazılım risklerinizi önceliklendirin, giderin ve güvence altına alın.
Ücretsiz hesabınızı alın.
Hiçbir kredi kartı gerekmektedir.

Yazılım Geliştirme ve Teslimatınızı Güvence Altına Alın

Xygeni Ürün Paketi ile