Trăn an toàn

Người giữ két trước tiên sẽ thiết lập két với mật khẩu gồm 6 chữ số và số lần thử tối đa mà một người có thể thực hiện để truy cập vào két.

Sử dụng két sắt

Két sẽ yêu cầu mật khẩu gồm 6 chữ số để mở. Mỗi đầu vào phải được thực hiện từng cái một. Khi một chữ số không khớp với mật khẩu tương ứng được nhập lần đầu tiên, chương trình phải hiển thị “xin lỗi mật khẩu sai” và cũng hiển thị số lần thử còn lại [ví dụ “5 lần thử còn lại”]. Nó cũng sẽ làm tương tự cho các lần nhập sai mật khẩu

Khi tất cả các lần thử đều thất bại, chương trình sẽ hiển thị “Đã kích hoạt báo động khẩn cấp” và kết thúc chương trình. Khi tất cả các mật khẩu được nhập chính xác, chương trình sẽ hiển thị “mở cửa an toàn” và kết thúc chương trình

Làm thế nào để bắt đầu

Trước tiên, chúng tôi nhập hệ thống và chức năng thoát gốc do python xác định, đồng thời đọc các mô-đun hệ điều hành và biểu thức. Sau đó, chúng tôi xác định chức năng 'startMenu []'. Bên trong hàm ‘startMenu[]’, chúng ta khai báo các Biến toàn cục sẽ được sử dụng. Sau đó, chúng ta gọi hàm ‘clr[]’

Sau đó, chúng tôi phân loại giới hạn truy nguyên. Cuối cùng, chúng tôi in tiêu đề chương trình và thông tin về chương trình

Sau đó, chúng tôi xác định một vòng lặp mới. Sau đó, chúng tôi làm những việc dưới đây cho đến khi một ngoại lệ xảy ra. Sau đó, chúng tôi xác định lựa chọn chức năng đầu vào của người dùng, 1,2 hoặc 3. Nếu lựa chọn là 1,2 hoặc 3 thì chúng ta thoát khỏi vòng lặp. Nếu là số mà không phải là 1,2 hoặc 3 thì in ra “Vui lòng chỉ nhập số trên menu. ”

Nếu một chuỗi được nhập, chúng tôi in “Vui lòng chỉ nhập số trên menu. ”

Nếu người dùng nhập “2”, chúng tôi gọi hàm ‘clr[]’. Người dùng Nhập mã pin đăng nhập của họ [chức năng sẽ trả về]

Người dùng nhập userAttempts đăng nhập của họ [chức năng sẽ trả về]

Sau đó, chúng tôi gọi chức năng xuất dữ liệu

Nó mở một tập tin có tên là “mật khẩu. txt”, mã pin người dùng và các lần thử của người dùng được mã hóa và ghi vào tệp

Sau đó, tập tin được đóng lại. Chúng tôi hiển thị mã pin của người dùng và số lần thử của người dùng do người dùng chỉ định

Cuối cùng, người dùng được đưa trở lại menu chính

Nếu người dùng nhập “1”, chúng tôi gọi chức năng đọc dữ liệu

Sau đó, chúng tôi mở tệp có tên là mật khẩu mật khẩu. txt” và mã pin của người dùng được giải mã và đọc từ tệp

Chúng tôi gọi chức năng đăng nhập người dùng

Mỗi đầu vào phải được thực hiện từng cái một. Khi một chữ số không khớp với mật khẩu tương ứng được nhập lần đầu tiên, chương trình phải hiển thị “xin lỗi mật khẩu sai” và cũng hiển thị số lần thử còn lại [ví dụ “5 lần thử còn lại”]. Nó cũng sẽ làm tương tự cho các mục nhập sai mật khẩu sau đây. Khi tất cả các lần thử đều thất bại, chương trình sẽ hiển thị “Đã kích hoạt báo động khẩn cấp” và kết thúc chương trình

Khi tất cả các mật khẩu được nhập chính xác, chương trình sẽ hiển thị “mở cửa an toàn” và kết thúc chương trình

Nếu người dùng nhập 3, chúng ta xóa màn hình và kết thúc chương trình bằng cách thực hiện hàm endProgram[]

Toàn bộ mã của keySafe. kịch bản py được đưa ra dưới đây

Bạn có thể chạy ứng dụng này bằng cách thực thi đoạn mã sau trên thiết bị đầu cuối

Tôi hy vọng bài viết này đã giúp bạn bắt đầu với python bằng cách xây dựng ứng dụng An toàn điện tử với python. Giữ liên lạc để biết thêm bài viết. Cảm ơn bạn

Hàm eval[] trong Python cho phép bạn thực thi mã Python ngẫu nhiên từ một chuỗi. Nó có thể thực sự thuận tiện khi bạn cần thực thi mã tùy ý đến từ đầu vào

Ví dụ: giả sử bạn có một biến bla và muốn thực hiện một số thao tác trên biến đó. Sau đó, bạn có thể gọi đoạn mã sau [ở đây, chỉ cần in biến]

COPYbla = “hello”
eval[print[bla]]

Tại sao eval trong Python không an toàn và bảo mật?

eval[] không an toàn vì bạn không bao giờ biết liệu mã bạn thực thi có đáng tin cậy hay không. Bạn có thể giới hạn phạm vi của các biến đang được truy cập với đối số thứ hai được chuyển đến eval[] nhưng có nhiều trường hợp nội dung của lệnh có an toàn hay không

Hãy tưởng tượng rằng người dùng của bạn sử dụng một lệnh độc hại để thực thi mã để lấy danh sách người dùng trên hệ thống của bạn như bên dưới. Người dùng có thể lấy thông tin về hệ thống của bạn hoặc thậm chí tệ hơn là xóa thông tin khỏi hệ thống của bạn [chẳng hạn như dữ liệu, nhật ký, v.v.]

COPYcmd = "print[open[\"/etc/passwd\"].readlines[]]"
eval[cmd]

Và ngay cả khi bạn cố gắng giảm thiểu sự cố [ví dụ: bằng cách xóa người dùng khỏi các biến toàn cục], đầu vào của người dùng không thể tin cậy được. Xem bài đăng trên blog này để hiểu sâu hơn. Ngay cả những ghi chú về các vấn đề bảo mật với eval[]

Sử dụng literal_eval[] để có mã Python an toàn và bảo mật

Giải pháp thay thế an toàn và bảo mật là sử dụng literal_eval[] từ gói ast. literal_eval[] không cho phép bạn chạy mã từ mô-đun khác, nó chỉ xử lý kiểu dữ liệu Python [e. g. nếu bạn cần thao tác dữ liệu, không gọi bất kỳ chức năng nào khác]. Bạn có thể đọc thêm về các hạn chế của literal_eval[] trong tài liệu của nó. Lợi ích chính từ việc sử dụng literal_eval[] là bất kỳ nỗ lực nào từ nguồn không đáng tin cậy để thực thi mã độc hại sẽ thất bại và gây ra ngoại lệ ValueError. Nói cách khác, cuộc gọi literal_eval[] với mã độc sẽ không thành công và đưa ra một ngoại lệ mà các nhà phát triển cần xử lý

Nhược điểm của việc sử dụng literal_eval[] là bạn không thể thực hiện các chức năng khác dựa trên bất kỳ đầu vào nào. Trong những trường hợp như vậy, bạn cần tự thực hiện hành vi và không bao giờ dựa vào việc gọi hàm eval[]

Tự động phát hiện việc sử dụng eval[] không an toàn hoặc không an toàn

Với plugin Codiga, bạn có thể tự động phát hiện mã Python an toàn hoặc không an toàn. Nó tích hợp trong IDE cũng như đường dẫn CI/CD của bạn, nhờ vào tất cả các tích hợp của chúng tôi. Bạn thậm chí có thể thử quy tắc để tránh sử dụng eval[] không an toàn bên dưới

Kiểm tra quy tắc để tránh eval[] và sử dụng literal_eval[]

Để sử dụng quy tắc này một cách nhất quán, tất cả những gì bạn cần làm là cài đặt tích hợp trong IDE [đối với Mã VS hoặc JetBrains] hoặc hệ thống quản lý mã và thêm tệp

COPYcmd = "print[open[\"/etc/passwd\"].readlines[]]"
eval[cmd]
8 vào thư mục gốc của hồ sơ của bạn với nội dung sau

COPYrulesets:
  - python-security

Sau đó, nó sẽ kiểm tra tất cả mã Python của bạn dựa trên hơn 100 quy tắc phát hiện mã không an toàn và không an toàn, đồng thời đề xuất các bản sửa lỗi cho từng quy tắc đó

Quy trình an toàn trong Python là gì?

Quy trình an toàn đề cập đến mã chương trình có thể được thực thi đồng thời mà không gặp lỗi bởi nhiều quy trình . Đó là khái niệm “an toàn theo luồng” được áp dụng cho các quy trình, trong đó các quy trình là đơn vị đồng thời thay vì các luồng. An toàn luồng là mối quan tâm chính của lập trình đồng thời sử dụng luồng.

chủ đề gì

An toàn luồng là tránh chạy đua dữ liệu —các tình huống trong đó dữ liệu được đặt thành giá trị đúng hoặc sai, tùy thuộc vào thứ tự trong .

Bình jinja có an toàn không?

Trong Flask, Jinja được định cấu hình để tự động thoát bất kỳ dữ liệu nào được hiển thị trong các mẫu HTML. Điều này có nghĩa là việc hiển thị đầu vào của người dùng là an toàn ; .

Python luôn luôn là chủ đề

Python không phải là chuỗi tự an toàn . Nhưng có những động thái để thay đổi điều này. NoGil, v.v. Xóa GIL không làm cho chức năng an toàn theo luồng.

Chủ Đề