다른 사용자의 암호를 변경할 수 있는 문제 해결
- 환경설정에 들어가서, 아이디란에 다른 사람의 아이디를 넣으면 그 아이디의 환경설정을 변경해 버릴 수 있는 문제가 있었다.
- 소스를 수정하여, 환경설정에 넣은 아이디가 이미 존재하는 아이디일 경우는, 그 아이디로 로긴한 사람만이 설정 변경을 할 수 있도록 하였다.
- 프로그래밍팁/Wiki 의 패치를 적용
- 이 경우, 암호를 잊어버리면 대책이 없다
- 따라서, 관리자 권한을 가지고 있는 사람은 타인의 암호를 변경할 수 있도록 수정하였다.
- 관리자가 자신의 아이디로 로긴한 후, 환경설정에 들어가서, ID 란에 타인의 아이디를 입력하고, 암호를 지정해 준 후 저장을 하면 된다.
- 주의!!! 이 때 반드시 "관리자암호" 란에 있는 "*" 마크를 지우고 공란으로 두어야 한다. 그렇지 않고 그냥 저장해버리면 관리자의 관리자암호가 그대로 적용되면서 타인에게 관리자권한을 주게 된다!!!
- 이런 위험에도 불구하고 굳이 관리자에게 변경 권한을 남기는 이유는,
- 패치 적용 이전에도 이미 존재하던 위험이고
- 어쨌거나 user 디렉토리에 들어가서 암호를 까먹은 유저의 *.db 화일을 삭제하고 새로 만들도록 하는 것보다는 이 방법이 뽀대가 나기 때문이다. -_-; 게다가, root 권한이 없으면 유저 화일을 삭제하기도 쉽지 않다.
-
sub DoUpdatePrefs {
...
$UserID = &FreeToNormal(&GetParam("p_username", ""));
$username = &FreeToNormal(&GetParam("p_username", ""));
my ($status, $data) = &ReadFile(&UserDataFilename($UserID));
if ($status) {
if ((!(&UserIsAdmin)) && ($UserData{'id'} ne $UserID)) {
print T('Error: Can not update prefs. That ID already exists and does not match your ID.'). '<br>';
print &GetCommonFooter();
return;
}
}
if ($FreeLinks) {
$username =~ s/^\[\[(.+)\]\]/$1/;
...
}
위키위키분류