NinjaFirewall 보안 플러그인을 설치한 후 대시보드를 확인해보니 User session에 PHP sessions을 사용하고 있습니다. 문구가 나타났습니다. 이에 대해 궁금증이 생겨 조사해본 결과, NinjaFirewall sessions으로 변경하는 것이 성능 면에서 더 유리하다는 사실을 알게 되었습니다.
공식 블로그 게시물을 확인해보니, NinjaFirewall은 기본적으로 PHP 세션을 사용하며 대부분의 사용자들이 이 기본 설정을 그대로 유지하고 있었습니다. 그러나 AJAX를 이용한 병렬 요청 등에서 PHP 세션이 차단되면 사이트 속도가 느려질 수 있다는 점을 알게 되었습니다.
사이트가 느려질 수 있다는 점을 알게 된 후 NinjaFirewall 세션으로 변경하기 위해 공식 문서를 참고했으나, 설명이 복잡하여 저와 같이 변경하고자 하시는 분들을 위해 설정 방법을 정리해보겠습니다.
목차
PHP sessions
PHP 세션은 PHP의 내장 기능으로, 서버에서 사용자의 세션을 효과적으로 관리할 수 있습니다. 워드프레스와 기본적으로 잘 호환되기 때문에 널리 사용됩니다. 많은 워드프레스 플러그인들이 기본적으로 PHP 세션을 활용하므로, 플러그인 간의 호환성 문제도 상대적으로 적습니다.
단점으로는 서버가 여러 대일 경우, PHP 세션이 다른 서버로 분산되기 때문에 세션을 공유하기 위해 추가적인 설정이 필요할 수 있다는 점이 있습니다. 또한, 세션 데이터를 파일 시스템에 저장하는 방식이기 때문에 높은 트래픽 환경에서는 성능 저하가 발생할 수 있습니다.
성능 문제에 대해 좀 더 설명드리면, 병렬 요청(AJAX 요청)이 발생할 경우 한 요청이 완료되기 전까지 다른 요청이 대기하게 됩니다. 이로 인해 AJAX를 활용한 빠른 요청 처리에 성능 저하가 발생할 수 있습니다.
정리를 하자면, 워드프레스 플러그인과의 호환성에는 좋지만 병렬 요청 같은 트래픽 많은 환경에서는 성능 저하가 발생합니다.
NinjaFirewall sessions
NinjaFirewall 세션은 하이브리드 방식으로 PHP 세션과 객체 캐싱을 혼합하여 작동합니다. 보안 측면에서 유리하여 PHP 세션보다 더 안전하게 세션을 처리할 수 있도록 설계되었습니다.
NinjaFirewall은 세션 관리를 보다 효율적으로 처리하여 서버 부하를 줄이고 성능을 개선할 수 있습니다. 단점으로는 워드프레스 플러그인과의 호환성에 문제가 발생할 수 있다는 점이 있습니다.
따라서 많은 플러그인을 사용하는 사용자라면 호환성 문제가 발생할 가능성이 높습니다. 또한, PHP 세션에 비해 초기 설정이 더 복잡할 수 있습니다.
두 세션에 대한 결론
보안이 우선이거나 성능을 중시하는 경우에는 NinjaFirewall 세션이 적합합니다. 반면, 별다른 보안 문제나 트래픽 과부하가 없다면 호환성이 우수한 PHP 세션을 선택하시면 됩니다.
저는 플러그인 호환성 문제를 겪지 않고 플러그인 의존도가 낮기 때문에 보안과 성능을 고려하여 NinjaFirewall 세션으로 변경하기로 했습니다.
NinjaFirewall sessions으로 변경하기
처음 설치한 후 대시보드를 확인하면 PHP 세션으로 작동하는 것을 알 수 있습니다. NinjaFirewall 세션으로 변경하는 방법에 대한 공식 문서가 다소 복잡하게 설명되어 있어, 아래의 내용을 참고하시면 쉽게 적용하실 수 있을 것입니다.
NinjaFirewall 세션으로 변경하는 방법은 `wp-config.php` 파일에 다음 코드를 추가하는 것입니다. 그러나 설명에는 코드가 위치해야 할 정확한 위치가 자세히 나와 있지 않으니, 아래 내용을 참고하시기 바랍니다.
/* That's all, stop editing! Happy publishing. */
const NFWSESSION = true;
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
wp-config.php 파일을 여신 후에 /** Absolute path to the WordPress directory. */ 찾아서 바로 위에 const NFWSESSION = true; 추가하시면 됩니다. 서버를 재시작할 필요 없이 추가하게 되면 바로 적용이 됩니다.
`const NFWSESSION = true;`를 추가한 후 NinjaFirewall 대시보드로 이동하면, 위에 보이는 것처럼 You are using NinjaFirewall sessions변경된 것을 확인할 수 있습니다.
플러그인 호환성에 큰 문제가 없다면, 위의 설명을 참고하여 세션을 변경함으로써 보안과 성능을 향상시켜 보시기 바랍니다.
▶ NinjaFireWall 플러그인에서 .user.ini 경고 해결하는 방법