PyKasi dirancang dengan keamanan yang dipertimbangkan untuk melindungi pengguna dari kode berbahaya.
PyKasi membatasi module Python yang dapat di-import untuk mencegah eksekusi kode berbahaya.
Module yang DIIZINKAN:
math- Operasi matematikarandom- Angka acakdatetime- Tanggal dan waktujson- Parsing JSONstring- Manipulasi stringcollections- Tipe data koleksiitertools,functools- Functional programmingtime- Wakture- Regular expressionsurllib.parse,urllib.request- URL parsingbase64,hashlib,hmac- Encoding & hashinguuid- UUID generationdecimal,fractions,statistics- Matematika lanjutanflask- Web frameworkpathlib- Path operations
Module yang DILARANG:
os- Dapat menjalankan system commandssubprocess- Dapat menjalankan system commandssys- Dapat memodifikasi sistem__builtin__,__builtins__- Akses internal Pythonimportlib- Dapat bypass import restrictionspickle,shelve,marshal- Dapat execute arbitrary codecode- Dapat compile dan execute code
File Path:
- Hanya file dengan ekstensi
.bksyang dapat dijalankan - Path divalidasi dan di-resolve ke absolute path
- Dicek keberadaan file sebelum execution
Module Names:
- Nama module harus alphanumeric (dengan underscore dan dot)
- Dicek terhadap whitelist module yang aman
Warning: flask_runner.py menggunakan debug=True hanya untuk development!
Untuk production, gunakan WSGI server:
pip install gunicorn
gunicorn -w 4 flask_runner:app-
Jangan Import Module Berbahaya
# JANGAN LAKUKAN INI: # impor os; # ERROR: Tidak diizinkan! # impor subprocess; # ERROR: Tidak diizinkan! # LAKUKAN INI: impor math; # OK impor json; # OK -
Validasi User Input Jika aplikasi Anda menerima input user, validasi dengan hati-hati:
fungsi process_input(input_str) { # Validasi input kalo panjang(input_str) > 1000 { balikin "Input terlalu panjang"; } # Process safely balikin input_str; } -
Hindari Dynamic Code Execution PyKasi tidak mendukung
eval()atauexec()untuk keamanan.
- Gunakan WSGI Server - Jangan gunakan Flask development server
- Set Environment Variables - Jangan hardcode credentials
- Enable HTTPS - Gunakan SSL/TLS untuk komunikasi
- Rate Limiting - Batasi request per user
- Input Validation - Selalu validasi input dari user
Jika Anda menemukan security vulnerability:
- JANGAN buat public issue
- Email ke maintainer secara private
- Berikan detail yang jelas tentang vulnerability
- Tunggu response sebelum disclosure
- β Implementasi module import whitelist
- β Validasi file path
- β Validasi module names
- β Warning untuk Flask debug mode
- β Dokumentasi keamanan
Ingat: Keamanan adalah tanggung jawab bersama! π