Thứ Ba, 6 tháng 11, 2018

CakePHP - Bảo mật

Bảo mật là một tính năng quan trọng khác trong khi xây dựng các ứng dụng web. Nó đảm bảo cho người dùng của trang web rằng dữ liệu của họ được bảo mật. PHP cung cấp một số công cụ để bảo mật ứng dụng của bạn.

Mã hóa và giải mã

Thư viện bảo mật trong PHP cung cấp các phương thức mà chúng ta có thể mã hóa và giải mã dữ liệu. Sau đây là hai phương pháp được sử dụng cho cùng một mục đích.

static Cake\Utility\Security::encrypt($text, $key, $hmacSalt = null)
static Cake\Utility\Security::decrypt($cipher, $key, $hmacSalt = null)

Phương thức mã hóa sẽ lấy văn bản và khóa làm đối số để mã hóa dữ liệu và giá trị trả về sẽ là giá trị được mã hóa với tổng kiểm tra HMAC.

Để băm một phương thức hash () dữ liệu được sử dụng. Sau đây là cú pháp của phương thức hash ().

Cú pháp

static Cake\Utility\Security::hash($string, $type = NULL, $salt = false)

CSRF

CSRF là viết tắt của Cross Site Request Forgery . Bằng cách bật Thành phần CSRF, bạn sẽ nhận được sự bảo vệ chống lại các cuộc tấn công.

CSRF là một lỗ hổng phổ biến trong các ứng dụng web. Nó cho phép kẻ tấn công nắm bắt và phát lại yêu cầu trước đó và đôi khi gửi yêu cầu dữ liệu bằng cách sử dụng thẻ hình ảnh hoặc tài nguyên trên các tên miền khác.

CSRF có thể được kích hoạt bằng cách thêm CsrfComponent vào mảng thành phần của bạn như hình dưới đây.

Phần mềm lập trình PHP chuyên nghiệp.
public function initialize(){
   parent::initialize();
   $this->loadComponent('Csrf');
}
CsrfComponent tích hợp hoàn hảo với FormHelper . Mỗi khi bạn tạo một biểu mẫu với FormHelper, nó sẽ chèn một trường ẩn chứa mã thông báo CSRF.

Trong khi điều này không được khuyến khích, bạn có thể muốn vô hiệu hóa CsrfComponent trên các yêu cầu nhất định. Bạn có thể làm như vậy bằng cách sử dụng bộ điều phối sự kiện của bộ điều khiển, trong phương thức beforeFilter () .
public function beforeFilter(Event $event){
   $this->eventManager()->off($this->Csrf);
}

Thành phần bảo mật

Security Component áp dụng bảo mật chặt chẽ hơn cho ứng dụng của bạn. Nó cung cấp các phương thức cho các nhiệm vụ khác nhau như

Hạn chế các phương thức HTTP mà ứng dụng của bạn chấp nhận - Bạn nên luôn luôn xác minh phương thức HTTP đang được sử dụng trước khi thực hiện các tác dụng phụ. Bạn nên kiểm tra phương thức HTTP hoặc sử dụng Cake \ Network \ Request :: allowMethod () để đảm bảo phương thức HTTP đúng được sử dụng.

Bảo vệ giả mạo biểu mẫu - Theo mặc định, SecurityComponent ngăn người dùng giả mạo biểu mẫu theo các cách cụ thể. SecurityComponent sẽ ngăn chặn những điều sau đây -

Không thể thêm các trường không xác định vào biểu mẫu.

Không thể xóa các trường khỏi biểu mẫu.

Không thể sửa đổi các giá trị trong đầu vào bị ẩn.

Yêu cầu sử dụng SSL đó - tất cả các hành động yêu cầu bảo mật SSL.

Hạn chế giao tiếp điều khiển chéo - Chúng ta có thể hạn chế bộ điều khiển nào có thể gửi yêu cầu tới bộ điều khiển này. Chúng tôi cũng có thể hạn chế những hành động nào có thể gửi yêu cầu đến hành động của bộ điều khiển này.

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như được hiển thị trong chương trình sau.

config / routes.php
<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('login',['controller'=>'Logins','action'=>'index']);
      $routes->fallbacks('DashedRoute'); 
   });
   Plugin::routes();
Tạo một tệp LoginsController.php tại src / Controller / LoginsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / LoginsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class LoginsController extends AppController{
      public function initialize(){
         parent::initialize();
         $this->loadComponent('Security');
      }
      public function index(){
      }
   }
?>

Tạo thư mục Đăng nhập tại src / Template và dưới thư mục đó tạo một tệp Xem có tên là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Thông tin đăng nhập / index.ctp
<?php
   echo $this->Form->create("Logins",array('url'=>'/login'));
   echo $this->Form->input('username');
   echo $this->Form->input('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>
Thực hiện ví dụ trên bằng cách truy cập URL sau - http: // localhost: 85 / PHP / login

Đầu ra

Khi thực hiện, bạn sẽ nhận được kết quả sau.
Phần mềm lập trình PHP chuyên nghiệp
Phần mềm lập trình PHP chuyên nghiệp

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...