Hướng dẫn php secure code review checklist - danh sách kiểm tra đánh giá mã an toàn php

Đánh giá mã là một thành phần thiết yếu của bất kỳ quy trình phát triển phần mềm nào. Khi các nhà phát triển đã hoàn thành việc viết một đoạn mã, nó rất hữu ích khi có người khác xem xét và kiểm tra mã, xác định bất kỳ lỗi hoặc sự thiếu hiệu quả nào.

Mặc dù quá trình xem xét mã chuyên sâu và tốn thời gian theo thiết kế, bạn vẫn có thể làm cho nó nhanh hơn và đơn giản hơn với các công cụ xem xét mã phù hợp.

Vậy các nhà phát triển PHP nên xem xét gì khi nhận được đánh giá mã cho phần mềm của họ?

Dưới đây, chúng tôi sẽ cung cấp một danh sách kiểm tra đánh giá mã PHP hoàn chỉnh để bạn có thể bao gồm tất cả các cơ sở của mình.

1. Khả năng đọc và sạch sẽ

Bước đầu tiên là đảm bảo rằng mã PHP của bạn sạch và có thể đọc được để cả bạn và các nhà phát triển khác có thể dễ dàng hiểu được nó.

Đảm bảo xem xét các vấn đề sau:

  • Là định dạng mã được viết theo cùng một kiểu với phần còn lại của dự án?
  • Mã có được mô tả tốt với nhận xét hoặc tài liệu khác không?
  • Có dễ dàng để nhận ra mục đích của một chức năng hoặc lớp PHP nhất định không?
  • Mã có ném ngoại lệ hoặc hiển thị thông báo lỗi phù hợp khi có sự cố không?
  • Có bất kỳ biến, chức năng hoặc tên tệp không rõ ràng hoặc không nhất quán?
  • Vẫn còn các khối mã lớn được bình luận rằng nên bị xóa?
  • Có các phần trùng lặp của mã có thể được xóa hoặc ngưng tụ không?
  • Các tệp lớn có thể được tái cấu trúc hoặc chia thành các thành phần nhỏ hơn dễ hiểu không?

Để có câu trả lời tốt hơn và rõ ràng hơn cho khả năng đọc và sạch sẽ, hãy cố gắng trung thực khi tự mình thực hiện những câu hỏi này cho chính mình hoặc nhóm của bạn. Nếu không, cố gắng tạo ra một bức tranh hư cấu về tình huống sẽ không đóng góp vào một mã bền vững và kiên cường.

2. Hiệu quả

Khi bạn đã xử lý vấn đề về khả năng đọc cơ bản, bước tiếp theo là tối ưu hóa tốc độ, hiệu quả và hiệu suất của mã PHP của bạn.

Đầu tiên, những gì bạn cần làm là lùi lại một bước và xem xét liệu bạn có đang phát minh lại bánh xe không cần thiết hay không.

Có bất kỳ lớp hoặc chức năng nào mà bạn đã xác định có thể được thực hiện với các thư viện PHP gốc thay thế không?

Cụ thể, kiểm tra việc bạn sử dụng các cấu trúc dữ liệu PHP. Mảng là cấu trúc dữ liệu PHP duy nhất, nhưng chúng đi kèm với nhiều chức năng để đi qua và thao túng chúng.

Tuy nhiên, phần mở rộng PHP DS giới thiệu nhiều cấu trúc dữ liệu thay thế mạnh mẽ, chẳng hạn như vectơ, deques, bản đồ, bộ, v.v.

Ngoài việc sử dụng các cấu trúc dữ liệu của bạn, cũng điều tra xem các thuật toán sử dụng các cấu trúc dữ liệu này có hiệu quả nhất có thể hay không.

Bạn đang tiêu thụ nhiều thời gian hoặc bộ nhớ hơn bạn cần bằng cách sử dụng thuật toán không hiệu quả?

3. Bảo mật

Bảo mật thường bị bỏ qua trong quá trình phát triển vì hầu hết các lập trình viên chủ yếu tập trung vào việc xây dựng một sản phẩm cuối cùng.

Tuy nhiên, bảo mật đặc biệt quan trọng đối với các ngôn ngữ như PHP thường được sử dụng để phát triển web, khiến chúng trở thành mục tiêu cao cấp cho những kẻ tấn công.

Đánh giá mã PHP nên kiểm tra kỹ lưỡng các lỗ hổng bảo mật phổ biến như:

  • Scripting Cross Site [XSS]: Trong tập lệnh chéo trang, kẻ tấn công sử dụng trình duyệt của máy khách để chạy mã JavaScript độc hại. Để ngăn chặn cuộc tấn công XSS, mã PHP của bạn nên vệ sinh đầu vào của người dùng để đảm bảo rằng trình duyệt giải thích bất kỳ mã độc nào như HTML thay thế. In cross-site scripting, the attacker uses the client’s browser to run malicious JavaScript code. To prevent an XSS attack, your PHP code should sanitize user input to make sure that the browser interprets any malicious code as HTML instead.
  • SQL Injection: SQL Injections, như kịch bản chéo trang, xảy ra khi hệ thống diễn giải sai đầu vào của người dùng dưới dạng mã và thực thi nó. Trong trường hợp này, đầu vào của kẻ tấn công có chứa mã SQL cố gắng truy cập hoặc sửa đổi nội dung của cơ sở dữ liệu nội bộ. Cũng giống như XSS, tiêm SQL có thể được ngăn chặn bằng cách vệ sinh đầu vào của người dùng và hiển thị nó vô hại. SQL injections, like cross-site scripting, occur when a system wrongly interprets user input as code and executes it. In this case, the attacker’s input contains SQL code that attempts to access or modify the contents of an internal database. Also like XSS, SQL injections can be prevented by sanitizing user input and rendering it harmless.
  • Sự giả mạo yêu cầu chéo [CSRF]: Trong một cuộc tấn công CSRF, kẻ tấn công tận dụng những người dùng được đăng nhập vào trang web của bạn, về cơ bản là cưỡi trên đường và sử dụng thông tin đăng nhập của họ để đưa ra yêu cầu độc hại. Để ngăn chặn các cuộc tấn công CSRF, bạn chỉ có thể phát hành mã thông báo CSRF cho người dùng hợp pháp, cho phép bạn phân biệt các yêu cầu người dùng thực với các yêu cầu sai. In a CSRF attack, the attacker takes advantage of users who are logged into your website, essentially “riding along” and using their credentials to issue a malicious request. To prevent CSRF attacks, you can issue CSRF tokens only to legitimate users, allowing you to distinguish real user requests from false ones.

Danh sách các lỗ hổng PHP tiềm năng là quá dài để thảo luận ở đây. Các trang web như chi tiết CVE và OWASP là tài nguyên vô giá cho bảo mật PHP.

4. Khả năng mở rộngScalability

Khả năng mở rộng là khả năng của một trang web hoặc ứng dụng để thực hiện tốt dưới mức tải hoặc mức lưu lượng cao bất ngờ.

Khả năng mở rộng và thời gian hoạt động của trang web của bạn nên là một mối quan tâm thiết yếu cho doanh nghiệp của bạn. Ví dụ, việc ngừng hoạt động 63 phút trên trang web của Amazon trong lần bán "Ngày Prime" của nó khiến công ty ước tính khoảng 99 triệu đô la.

Mặc dù các cổ phần có thể không cao đối với công ty của bạn, các vấn đề về khả năng mở rộng rất quan trọng đối với các tổ chức thuộc mọi quy mô và ngành công nghiệp.

Xem xét cách mã sẽ hoạt động trong các khoảng thời gian sử dụng rất cao khi tiến hành đánh giá mã PHP.

Ví dụ, điều gì sẽ xảy ra với trang chủ của bạn nếu nó bị virus và bị ảnh hưởng bởi hàng tá yêu cầu mỗi giây?

5. Kiểm tra

Trong quá trình đánh giá mã PHP, mã của bạn nên được kiểm tra kỹ lưỡng để đảm bảo rằng nó đã sẵn sàng để triển khai.

Các loại thử nghiệm phần mềm bạn có thể sử dụng bao gồm:

  • Kiểm tra chức năng: Kiểm tra chức năng đảm bảo rằng một ứng dụng đáp ứng các yêu cầu kinh doanh mà nó đã được tạo ra. Functional testing ensures that an application fulfills the business requirements for which it has been created.
  • Kiểm tra đơn vị: Trong thử nghiệm đơn vị, các phần nhỏ riêng lẻ của cơ sở mã được kiểm tra để đảm bảo rằng chúng hoạt động chính xác. In unit testing, small individual parts of the codebase are tested to ensure that they work correctly.
  • Kiểm tra tích hợp: Kiểm tra tích hợp, là bước tiếp theo sau khi kiểm tra đơn vị, xác minh rằng các phần khác nhau của ứng dụng có thể được tích hợp và làm việc cùng nhau một cách chính xác. Integration testing, which is the next step after unit testing, verifies that different parts of the application can be integrated and work together correctly.
  • Kiểm tra hiệu suất: Kiểm tra hiệu suất đánh giá tốc độ và hiệu suất của ứng dụng trong các điều kiện kiểm tra khác nhau.Performance testing evaluates an application’s speed and performance under different testing conditions.

Sự kết luận

Đánh giá mã có thể tốn nhiều thời gian và lao động, nhưng những nỗ lực kỹ lưỡng của bạn sẽ được thưởng bằng mã PHP chất lượng cao.

Bằng cách tuân theo danh sách kiểm tra đánh giá mã PHP ở trên, phần mềm của bạn sẽ dễ hiểu hơn, hiệu suất và an toàn hơn, sẽ trả cổ tức cho doanh nghiệp của bạn.

Từ phát triển ứng dụng đến phân phối phần mềm, đội ngũ chuyên gia CNTT có kinh nghiệm có kinh nghiệm của chúng tôi giúp khách hàng của chúng tôi đạt được sự xuất sắc kỹ thuật số.

Để tìm hiểu thêm về các dịch vụ AdServio và cách chúng tôi có thể giúp bạn, liên lạc với chúng tôi ngay hôm nay và cho chúng tôi biết nhu cầu và mục tiêu kinh doanh của bạn.

Chủ Đề