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.
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 () .
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
src / Controller / LoginsController.php
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
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 |

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