회원제 완전 익명 커뮤니티를 만드려고 합니다.
차단 기능은 브라우저 지문으로 대체하려고 합니다.
라이믹스는 글, 댓글 작성 외에 회원가입시 IP도 기록되는데 전부 기록하지 않게 하려면 어떻게 수정해야 할까요?
PHP | PHP 7.3 |
---|---|
CMS | Rhymix 2.x |
회원제 완전 익명 커뮤니티를 만드려고 합니다.
차단 기능은 브라우저 지문으로 대체하려고 합니다.
라이믹스는 글, 댓글 작성 외에 회원가입시 IP도 기록되는데 전부 기록하지 않게 하려면 어떻게 수정해야 할까요?
앗 그렇군요
질문자분께서 말씀하신 브라우저 지문이 어떤걸 의미하는지는 모르겠지만 만약 해당 값이 유일한 값이라면, 그 토큰을 이용해 적당히 계산식을 맞춰 아이피 형식으로 만들어주면 될거 같네요
그러면 아이피주소와 동일한 역할을 할테지만 그걸가지고 추적은 어렵게 될테니까요
람보님께서 말씀하셨듯이 해당 기능은 코어를 아주아주 많이 수정해야해서 어디를 수정해야할지 짚어드리기가 어렵습니다.
특히 유지보수 측면에서 코어수정은 최대한 피하시는게 좋습니다
차라리 제가 위에 적어놓은것처럼 아이피주소를 특정 불가능한 고유한 값으로 변경하시는게 낫지 않을까 싶어요
라이믹스에서 아이피주소가 하는 역할은 하면서, 생각하고 계신 아이피주소로 인한 추적도 막을 수 있을테니까요
코어 수정이 많이 필요하지는 않습니다.
라이믹스에서 모든 IP 정보는 RX_CLIENT_IP 상수를 참조하고, 그 상수는 처음 선언할 때 $_SERVER['REMOTE_ADDR']에서 값을 받아오도록 되어 있습니다. RX_CLIENT_IP 상수를 참조하지 않는 서드파티 자료라도 $_SERVER['REMOTE_ADDR']에서 값을 받아오는 것은 마찬가지입니다.
따라서 라이믹스가 본격적으로 실행되기 전, 그러니까 common/autoload.php 상단이나, 아니면 코어 수정 없이 php.ini에서 auto_prepend_file로 설정한 별도의 파일을 사용하여 $_SERVER['REMOTE_ADDR']에 임의의 값을 넣으면 이후에 실행되는 모든 모듈과 애드온 등에서 방문자의 IP가 그 값으로 기록되도록 할 수 있습니다. 흔히 지레짐작하는 것과 달리 $_SERVER 초전역변수는 신성불가침이 아닙니다. 스크립트에서 마음대로 조작할 수 있어요. 이 변수 하나만 바꾸면 되지, 굳이 그 변수를 사용하는 다른 곳을 일일이 찾아서 수정할 필요가 없다는 뜻입니다. 단, 아무거나 넣으면 안 되고 일반적인 IP 주소의 형태(0.0.0.0 또는 IPv6)를 갖추어야 코어 및 서드파티 자료들이 오작동하지 않을 것입니다.
물론 모든 방문자가 동일한 IP로 찍힌다면 아무도 추천을 할 수 없게 되는 등, 윗분들이 말씀하신 부작용이 발생할 여지가 있는 것은 사실입니다. 따라서 모든 IP를 동일한 값으로 치환하기보다는 랜덤으로 생성하거나 일정한 변환 규칙을 거쳐서 방문자마다 각각 다른 가짜 IP가 나오도록 하는 방법이 좋을 것 같습니다. 예를 들어 방문자의 실제 IP 주소나 위에서 말씀하신 브라우저 지문 등을 md5로 처리한 후, 4자리씩 8개로 나누어 콜론(:) 문자로 구분하면 IPv6 주소처럼 보이겠지요.
제가 10여년 전에 보안상 민감한 사이트를 운영하면서 이런 트릭을 써본 적이 있기에 잘 작동한다고 자신있게 말씀드리는 것입니다.^^ 심지어 이런 IP 조작 기능을 정식 부가서비스로 제공하는 클플 같은 회사도 있습니다. 클플을 사용하면 IPv6 방문자가 생겨나는데, 백엔드에서 IPv6 주소를 처리하기 곤란한 경우 특정 기능을 켜면 그럴듯한 가짜 IPv4 주소로 바꿔서 전달해 주더군요.
2.0.10 버전 기준으로
common/constants.php의 62, 67번째 줄을 원하는 값으로 바꾸시면 됩니다.
define('RX_CLIENT_IP', '127.0.0.1'); 과 같이 바꾸실 수 있겠죠...
추가로 설치하신 모듈이나 애드온 대부분은 RX_CLIENT_IP 상수를 쓰지 않고 $_SERVER['REMOTE_ADDR'] 값을 사용할겁니다. 그 부분 역시 전부 찾으셔서 \RX_CLIENT_IP로 바꾸시면 됩니다.
상당수 많은 부분을 수정 해야할 거예요.