> > 웹상에서 실행을 하면 소유권이 nobody로 되더군요.
> >
> > ///////////////////////////////////////////////////////////////
> > 우선, postgres로 로그인을 한 후에
> > createuser nobody를 만들어야 되겠죠.
> > 그리고, cgi프로그램속에 create table 명령어나 insert 명령어를
> > 작성하면 소유권이 nobody로 됩니다.
> > ///////////////////////////////////////////////////////////////
>
> 즉, 새로 테이블을 만드셨다는 뜻이군요.
> 그리고 nobody를 테이블 생성 권한을 주셨다는 뜻인데...
> 좀 위험하지 않을까요?
> 제가 웹을 구성한 적이 없으니 cgi가 어떤 식으로 돌아가는지는
> 모르겠습니다만,
> postgresql에서 테이블 생성권한이 있는 사람은 곧 postgres와 거의
> 흡사한 테이블 접근권한을 가집니다.
> 소유권한이 다른 테이블에의 임의 접근이 가능해 지는 겁니다.
> 어떻게 구성하셨는지는 모르겠지만 다른 테이블이 없으며(또는
> 파괴되도 상관없으며) 사용하는 테이블에 변형이 가해져도 별다른
> 문제가 없거나 아니면 cgi수준에서 그런 시도를 막아낼 수 있어야만
> 할 겁니다.
> 뭔지는 모르지만 잘 되시길 바랍니다.
>
> 인천의 나사 풀린 산호....
맞습니다. 위에서 나사님이 지적한 내용이 정확한 것입니다.
nobody 를 DB 사용자로서 등록하는 것은 당연한 것입니다. (물론 이것도 위험하다고 생각될 경우 이렇게 하지 않고 DBMS 를 연동할수는 있습니다만) 하지만 nobody 에게 DB 생성권한을 준다는 것은 좀 무리인 것 같습니다.
디비 및 테이블 생성은 다른 디비사용자로서 작업하시고, grant 로서 모든 권한을 조절하는 것이 가장 좋은 방법이라고 생각하고 있습니다.
아마도 앞으로 postgresql 의 보안 관련 문제는 좀더 발전시켜야 할 필요성이 있다고 판단됩니다. (물론 mysql 보다는 낳은 보안체계를 가지고 있다고 생각됩니다)
|