banner
Feb 12, 2023
156 Views

Pyre + Pysa: tự động scan lỗi bảo mật và lỗi source code python

Written by
banner

I. Khái niệm chính:

Pyre: là một type checker cho Python. Pyre có thể đánh giá source code hàng triệu dòng và thay đổi thường xuyên. Bạn có thể thử online ở the Pyre Playground.

Pysa: tập trung hơn vào các lỗi bảo mật và được xây dựng dựa trên Pyre. Nếu bạn dùng github có thể deploy Github Action chạy Pysa tự động.

II. Cài đặt:

NOTE: cài python3.8 theo hướng dẫn sau trước khi chạy các lệnh như bên dưới

III. Sử dụng:

Giả sử ở thư mục source tôi có 2 file code như sau:

  1. Init:

2. Edit file .pyre_configuration (source code nên để ở 1 thư mục riêng, như ở file này pysa+pyre sẽ kiểm tra ở thư mục ./source):

3. Edit file .watchmanconfig (source code nên để ở 1 thư mục riêng, như ở file này pysa+pyre sẽ kiểm tra ở thư mục ./source):

IV. Tính năng

  1. PYSA: chạy câu lệnh sau
(pysa) $ pyre analyze --no-verify --save-results-to ./pysa-runs

pysa phát hiện lỗi SQL injection ở file some_sql.py, file lỗi này bạn có thể xem tại ./pysa-runs/errors.json

2. PYRE: chạy câu lệnh pyre phát hiện 2 lỗi sau

  • Lỗi 1: stock_exchange_company chưa được define.
  • Lỗi 2: Phát hiện ra biến test.name vốn là optional nhưng chưa được gán giá trị. Bạn chỉ cần bỏ comment ở dòng 11 thì pyre sẽ tự đánh giá và nhận ra là biến đó đã được định nghĩa và không còn xuất hiện lỗi này.

3. PYRE infer: Pyre có chức năng infer nhằm thêm các kiểu dữ liệu trả về tự động giúp source code của bạn an toàn hơn. Chạy câu lệnh sau:

Hàm say_my_name ở file test.py sẽ được tự động sửa thành như sau

V. Thêm

Bạn có thể dùng kèm với SonarQube để tối ưu thêm

Article Tags:
· · · ·
Article Categories:
dev
banner

Leave a Reply

Your email address will not be published. Required fields are marked *