구현할려는 기능이
회원가입시 해당 회원정보를 바탕으로 외부 centos서버에 사용자 계정을 추가하도록 하는 기능을 만들어볼려고 하고 있습니다.
PHP단위에서 회원 아이디, 비밀번호 정보만으로 외부의 centos 에 adduser 명령으로 회원을 가입하게 할 수있는지 없는지 여부와 함께 참고할만한 라이브러리가 있나요?
말그대로 구현쪽 질문이다 보니.. 가능 혹은 불가능 여부부터 알아야 하다보니 조금 질문이 짧은점 양해 부탁드릴께요..ㅠㅠ
람보
Lv. 17
댓글 7
예전에 비슷한거 구현할려고 고민했었는데 역시 직접 실행하는 부분은 위험한거같아서
데이터파일을 생성해서 1분마다 실행하게 해서 등록하게 했었습니다.
쉘스크립트 만들어서 체크하게 하면 될거같습니다.
shell_exec로 useradd 명령어를 실행하면 되는데, 입력값을 검증하지 않고 무조건 실행하면 위험하고요.
입력값을 엄격하게 검사해서 서버 내부에서 명령어가 실행되지 않도록 해야할 거에요.
외부에서 호출하는 방식이라면 주소가 노출될 수 있으니, 더욱 보안에 신경쓰셔야 할 거고요.
PHP에서는 DB에 넣어주기만 하고, 외부서버에서 정기적으로 그 DB에 접속하여 데이터를 가져가서 useradd를 해주는 것이 가장 자연스럽습니다. 물론 윗분들 말씀대로 입력값 검증은 필수! (XE의 아이디 규칙을 참고하세요. 검증은 DB에 넣는 쪽, 받아가는 쪽에서 이중으로 해야 합니다.)
외부서버에서 DB에 접속하는 과정의 보안도 신경써야 하겠고요... (가능하면 DB에 직접 접속하지 말고 다른 PHP 파일을 거쳐서 JSON 같은 형식으로 뿌려주세요. 암호화하면 더 좋음.)
이미 존재하는 계정인 경우 막 덮어쓰지 않도록 안전장치가 있어야겠고...
크론으로 1분마다 실행하는 게 가장 쉽지만, 1분을 기다릴 수 없다면 다른 방법이 필요하겠네요. 5초마다 확인하고, 1분이 지나면 자동으로 종료되는 프로그램을 크론으로 1분마다 실행하는 꼼수도 있습니다.
PHP에 ssh 모듈이 설치되어 있다면 외부서버에 직접 접속해서 명령을 내려도 됩니다. 아니면 shell_exec으로 ssh 명령을 내려도 되고요. 그런데 root로 접속해야 하니 ㅎㄷㄷㄷ
모두 고마워용~ 정성스러운 답변.
https://blog.lael.be/post/178 여기 참고해보세요~
php 로 c 바이너리 파일을 호출하면 됩니다.