찾다

CakePHP 보안

Sep 10, 2024 pm 05:26 PM
phpcakephpPHP framework

보안은 웹 애플리케이션 구축 시 또 다른 중요한 기능입니다. 이는 웹사이트 사용자에게 데이터가 안전하다는 것을 보장합니다. CakePHP는 애플리케이션 보안을 위한 몇 가지 도구를 제공합니다.

암호화 및 복호화

CakePHP의 보안 라이브러리는 데이터를 암호화하고 해독할 수 있는 방법을 제공합니다. 다음은 같은 목적으로 사용되는 두 가지 방법입니다.

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

암호화 방법은 텍스트와 키를 인수로 사용하여 데이터를 암호화하고 반환 값은 HMAC 체크섬을 사용하여 암호화된 값이 됩니다.

데이터를 해싱하기 위해서는 hash() 메소드를 사용합니다. hash() 메소드의 구문은 다음과 같습니다.

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

CSRF

CSRF는 Cross Site Request Forgery의 약자입니다. CSRF 구성 요소를 활성화하면 공격으로부터 보호받을 수 있습니다. CSRF는 웹 애플리케이션의 일반적인 취약점입니다.

이를 통해 공격자는 이전 요청을 캡처하고 재생할 수 있으며 때로는 다른 도메인의 이미지 태그나 리소스를 사용하여 데이터 요청을 제출할 수도 있습니다. 아래와 같이 CsrfComponent를 구성 요소 배열에 추가하면 CSRF를 활성화할 수 있습니다. −

public function initialize(): void {
   parent::initialize();
   $this->loadComponent('Csrf');
}

CsrfComponent는 FormHelper와 원활하게 통합됩니다. FormHelper를 사용하여 양식을 생성할 때마다 CSRF 토큰이 포함된 숨겨진 필드가 삽입됩니다.

권장되지는 않지만 특정 요청에서는 CsrfComponent를 비활성화할 수 있습니다. beforeFilter() 메서드

중에 컨트롤러의 이벤트 디스패처를 사용하면 됩니다.
public function beforeFilter(Event $event) {
   $this->eventManager()->off($this->Csrf);
}

보안 구성요소

보안 구성요소는 애플리케이션에 더욱 엄격한 보안을 적용합니다. −

과 같은 다양한 작업에 대한 방법을 제공합니다.
  • 애플리케이션이 허용하는 HTTP 메소드 제한 − 부작용을 실행하기 전에 항상 사용되는 HTTP 메소드를 확인해야 합니다. HTTP 메소드를 확인하거나 CakeNetworkRequest::allowMethod()를 사용하여 올바른 HTTP 메소드가 사용되는지 확인해야 합니다.

  • 양식 변조 방지 - 기본적으로 SecurityComponent는 사용자가 특정 방식으로 양식을 변조하는 것을 방지합니다. SecurityComponent는 다음을 방지합니다 −

    • 알 수 없는 필드는 양식에 추가할 수 없습니다.

    • 양식에서 필드를 제거할 수 없습니다.

    • 숨겨진 입력값은 수정할 수 없습니다.

  • SSL 사용 요구 − SSL 보안을 요구하는 모든 작업

  • 컨트롤러 간 통신 제한 − 이 컨트롤러에 요청을 보낼 수 있는 컨트롤러를 제한할 수 있습니다. 또한 이 컨트롤러의 작업에 요청을 보낼 수 있는 작업을 제한할 수도 있습니다.

다음 프로그램과 같이 config/routes.php 파일을 변경합니다.

config/routes.php

<?php use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',
      ['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('login',['controller'=>'Logins','action'=>'index']);
   $builder->fallbacks();
});

src/Controller/LoginsController.php에서 LoginsController.php 파일을 생성합니다. 컨트롤러 파일에 다음 코드를 복사합니다.

src/Controller/LoginsController.php

<?php namespace App\Controller;
   use App\Controller\AppController;
   class LoginsController extends AppController {
      public function initialize() : void {
         parent::initialize();
         $this->loadComponent('Security');
      }
         public function index(){
      }
   }
?>

src/TemplateLogins 디렉토리를 만들고 해당 디렉토리 아래에 index.php라는 View 파일을 만듭니다. 해당 파일에 다음 코드를 복사하세요.

src/Template/Logins/index.php

<?php echo $this->Form->create(NULL,array('url'=>'/login'));
   echo $this->Form->control('username');
   echo $this->Form->control('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

다음 URL(http://localhost/cakephp4/login)을 방문하여 위의 예를 실행하세요

출력

실행하면 다음과 같은 결과가 출력됩니다.

Submit Login

위 내용은 CakePHP 보안의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.Apr 26, 2025 am 12:03 AM

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구