php 워드프레스 개발

워드프레스 워드펜스 로그인실패 횟수 표시

최혁재 2025. 1. 17. 18:45

워드프레스 사이트의 보안을 강화하기 위해 워드펜스(Wordfence) 플러그인을 사용하는 경우, 로그인 실패 횟수를 사용자에게 표시하는 방법을 소개합니다. 이 방법을 통해 사용자는 로그인 시도 중 몇 번 실패했는지 알 수 있으며, 보안 경고 메시지를 통해 사이트 접속 차단에 대한 경고를 받을 수 있습니다.

 

1. 로그인 실패 시도 횟수 증가 함수

my_custom_pre_login_function
이 함수는 사용자가 로그인에 실패할 때마다 호출됩니다. wpmem_login_failed 필터를 사용하여 로그인 실패 메시지를 사용자에게 표시합니다. 이 메시지에는 현재 몇 번의 로그인 시도가 실패했는지에 대한 정보가 포함됩니다.

2. IP 주소 변환 함수

IPv4 주소를 IPv6 주소로 변환하는 함수입니다. 이 함수는 로그인 실패 시도 횟수를 정확히 추적하기 위해 사용됩니다.

왜 UNHEX(%s)를 사용하는가?
위 코드에서 UNHEX(%s)를 사용하는 이유는 데이터베이스의 IP 컬럼이 BINARY(16) 형식으로 저장되어 있기 때문입니다. BINARY(16) 형식은 IPv6 주소를 저장하기 위한 형식으로, IPv4 주소도 IPv6 형식으로 변환하여 저장할 수 있습니다.

IP 컬럼이 BINARY(16) 형식인 이유
IPv6 지원: BINARY(16) 형식은 IPv6 주소를 저장할 수 있습니다. IPv6 주소는 128비트 길이로, 16바이트로 표현됩니다.
IPv4 호환성: IPv4 주소는 32비트 길이로, 4바이트로 표현됩니다. 이를 IPv6 형식으로 변환하면 ::ffff:192.0.2.128와 같은 형태가 되며, 16바이트로 저장할 수 있습니다. 예를 들어, IPv4 주소 106.101.68.195는 ::ffff:6a65:44c3로 변환되어 저장됩니다.


UNHEX 함수의 역할
16진수 문자열 변환: UNHEX 함수는 16진수 문자열을 바이너리 데이터로 변환합니다. 예를 들어, UNHEX('0a0b0c0d')는 4바이트의 바이너리 데이터를 반환합니다.
데이터베이스 쿼리: IP 주소를 16진수 문자열로 변환한 후, UNHEX 함수를 사용하여 데이터베이스 쿼리에서 바이너리 형식으로 비교할 수 있습니다. 이는 데이터베이스에 저장된 BINARY(16) 형식의 IP 주소와 비교하기 위해 필요합니다.


예시
예를 들어, 데이터베이스에 저장된 IP 주소가 0x00000000000000000000ffff6a6544c3와 같은 형식으로 저장되어 있다고 가정합니다. 이 주소는 106.101.68.195라는 IPv4 주소를 IPv6 형식으로 변환한 것입니다.

쿼리에서 UNHEX(%s)를 사용하면, 6a6544c3와 같은 16진수 문자열을 바이너리 데이터로 변환하여 데이터베이스의 BINARY(16) 형식의 IP 주소와 비교할 수 있습니다.


요약
위의 코드를 사용하면 워드프레스 사이트에서 로그인 실패 시도 횟수를 사용자에게 표시할 수 있습니다. 이를 통해 사용자는 로그인 시도 중 몇 번 실패했는지 알 수 있으며, 보안 경고 메시지를 통해 사이트 접속 차단에 대한 경고를 받을 수 있습니다. 이 방법은 워드펜스 플러그인을 사용하는 모든 워드프레스 사이트에 적용할 수 있습니다. IP 주소를 BINARY(16) 형식으로 저장하고, UNHEX 함수를 사용하여 데이터베이스 쿼리에서 정확히 비교할 수 있습니다.