멍부, 멍게 , 똑부, 똑게
멍부 : 멍청하면서 부지런한 사람
멍게 : 멍청하면서 게으른 사람
똑부 : 똑똑하면서 부지런한 사람
똑게 : 똑똑하면서 게으른 사람
조직에 이로운 순서로 나열하자면
똑게 > 똑부 > 멍게 > 멍부 순이다.
나도 똑게가 되고 싶다.
ps.
어제 배포한 그누보드 패치에 문제가 있습니다.
아직 안하신 분들은 기다려 주십시오.
오늘 보안보완패치 하겠습니다.
멍게 : 멍청하면서 게으른 사람
똑부 : 똑똑하면서 부지런한 사람
똑게 : 똑똑하면서 게으른 사람
조직에 이로운 순서로 나열하자면
똑게 > 똑부 > 멍게 > 멍부 순이다.
나도 똑게가 되고 싶다.
ps.
어제 배포한 그누보드 패치에 문제가 있습니다.
아직 안하신 분들은 기다려 주십시오.
오늘 보안보완패치 하겠습니다.
댓글 16개
Terrorboy
14년 전
전 [http://c.ask.nate.com/imgs/qrsi.php/7953564/10456556/0/1/A/01.JPG]
letsgolee
14년 전
관리자님, 패치를 잠깐 보았는데 핵심은 회원정보 수정시 저장하는 패스워드가 들어있는 세션이 삭제되는 경우가 없기 때문에 남아있는 세션을 통해 패스워드를 알아낼 수 있다는 것이 요지인 것 같은데요...
이런 방식은 어떨까요?
lib/common.lib.php:
// 영문과 숫자로된 랜덤 문자를 리턴
function rand_key($len, $chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
$key = '';
$len_chars = strlen($chars);
for ($i = 0; $i < $len; $i++) {
$pos = rand(0, $len_chars-1);
$key .= $chars{$pos};
}
return $key;
}
function encrypt($string, $key)
{
base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
function decrypt($string, $key)
{
trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
bbs/register_form.php:
//77라인 정도에 교체
77 $encrypt_key = md5(rand_key(5); // 다섯개의 랜덤 문자를 이용. 그것을 md5로 바꾸자.
78 $encrypted_password = encrypt($_POST[mb_password], $encrypt_key);
79 set_session('ss_encrypt_key', $encrypt_key);
skin/member/basic/register_form.skin.php:
//90라인 정도에 추가
90 <? if ($w=='u' && $encrypted_password){?><input type=hidden name=encrypted_password value="<?=$encrypted_password;?>" /><? } ?>
bbs/register_form_update.php:
//371라인부터 교체
else {
$encrypt_key = get_session('encrypt_key');
$tmp_password = decrypt($_POST[encrypted_password], $encrypt_key);
}
이런 방식은 어떨까요?
lib/common.lib.php:
// 영문과 숫자로된 랜덤 문자를 리턴
function rand_key($len, $chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
$key = '';
$len_chars = strlen($chars);
for ($i = 0; $i < $len; $i++) {
$pos = rand(0, $len_chars-1);
$key .= $chars{$pos};
}
return $key;
}
function encrypt($string, $key)
{
base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
function decrypt($string, $key)
{
trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
bbs/register_form.php:
//77라인 정도에 교체
77 $encrypt_key = md5(rand_key(5); // 다섯개의 랜덤 문자를 이용. 그것을 md5로 바꾸자.
78 $encrypted_password = encrypt($_POST[mb_password], $encrypt_key);
79 set_session('ss_encrypt_key', $encrypt_key);
skin/member/basic/register_form.skin.php:
//90라인 정도에 추가
90 <? if ($w=='u' && $encrypted_password){?><input type=hidden name=encrypted_password value="<?=$encrypted_password;?>" /><? } ?>
bbs/register_form_update.php:
//371라인부터 교체
else {
$encrypt_key = get_session('encrypt_key');
$tmp_password = decrypt($_POST[encrypted_password], $encrypt_key);
}
14년 전
네 세션에 남아있는 패스워드가 문제가 되는것입니다.
오늘 다시 수정된 패치를 올려 놓았습니다.
감사합니다.
ps. 코드가 너무 길면 적용하는데 어려움이 있습니다. 알려주신 코드는 참고하겠습니다.
오늘 다시 수정된 패치를 올려 놓았습니다.
감사합니다.
ps. 코드가 너무 길면 적용하는데 어려움이 있습니다. 알려주신 코드는 참고하겠습니다.
letsgolee
14년 전
여전히 문제는 패스워드가 세션에 남아있다는 게 걸립니다. 암호를 간단하게 한 사람들의 경우(이 사람들이 문제겠지만) 세션에 남아있는 패스워드 역시 풀릴 수 있는 가능성은 남아있습니다. 다음의 예를 보시면 이해가 될 겁니다: http://8220.tistory.com/1166334482
예전에 외국 사이트에서 본 글이 있는데 지금은 기억나지 않지만 요점은 시간이 걸리긴 해도 복호화가 가능하다는 겁니다. 고성능 컴퓨터를 가지고는 시간이 엉청 단축된다는 이야기외함께요.
예전에 외국 사이트에서 본 글이 있는데 지금은 기억나지 않지만 요점은 시간이 걸리긴 해도 복호화가 가능하다는 겁니다. 고성능 컴퓨터를 가지고는 시간이 엉청 단축된다는 이야기외함께요.
letsgolee
14년 전
곰곰히 생각해보았는데 왜 세션이 필요한지에 대해 의구심이 갑니다. 세션자체가 필요없이 가능하지 않나요???
최종으로 한 패치를 보면 sql_password로 암호화한 패스워드인데요...세션이 필요한 이유가 다시 register_form.php로 돌아가기 위한 것이라면
$tmp_password = get_session('ss_tmp_password'); 이게 아니라 데이터베이스에서 읽어오면 되지 않나요???
즉 처음부터 저장할 필요없이 register_form_update.php에서 register_form.php로 넘어가기전 데이터베이스에서 직접적으로 불러와서 그 값을 mb_password에 대입해주면 세션에 패스워드를 저장할 이유가 없어집니다.
최종으로 한 패치를 보면 sql_password로 암호화한 패스워드인데요...세션이 필요한 이유가 다시 register_form.php로 돌아가기 위한 것이라면
$tmp_password = get_session('ss_tmp_password'); 이게 아니라 데이터베이스에서 읽어오면 되지 않나요???
즉 처음부터 저장할 필요없이 register_form_update.php에서 register_form.php로 넘어가기전 데이터베이스에서 직접적으로 불러와서 그 값을 mb_password에 대입해주면 세션에 패스워드를 저장할 이유가 없어집니다.
14년 전
회원정보 수정시 패스워드를 한번 더 물어보게 됩니다.
이게 문제가 되는것이죠.
해시테이블로 패스워드를 푸는 문제는 논외로 치겠습니다.
이게 문제가 되는것이죠.
해시테이블로 패스워드를 푸는 문제는 논외로 치겠습니다.
letsgolee
14년 전
회원정보 수정시 패스워드를 물어보면 그 값이 register_form.php로 넘어옵니다. 이 값을 세션에 해시로 저장하여 나중에 register_form_update.php에서 register_form.php로 넘오올 때 다시 사용한다는 것은 알고 있습니다.
제 말은 세션에 해시 저장 자체가 불필요하다는 얘기입니다. 즉 register_form_update.php에서 $tmp_session = get_session("ss_tmp_password"); 이 아니고 $row = sql_fetch("select mb_password as passwd from $g4[member_table] where mb_id='$member[mb_id]'"); $tmp_session = $row[passwd]; 이렇게 해도 된다는 거구요. 그렇게 하면 세션에 패스워드를 저장할 필요 자체가 없어진다는 이야기입니다.
제 말은 세션에 해시 저장 자체가 불필요하다는 얘기입니다. 즉 register_form_update.php에서 $tmp_session = get_session("ss_tmp_password"); 이 아니고 $row = sql_fetch("select mb_password as passwd from $g4[member_table] where mb_id='$member[mb_id]'"); $tmp_session = $row[passwd]; 이렇게 해도 된다는 거구요. 그렇게 하면 세션에 패스워드를 저장할 필요 자체가 없어진다는 이야기입니다.
14년 전
쿼리를 한번 더 실행한다는 단점이 있지만 패스워드를 아예 노출하지 않는다는 장점이 더 크므로 다음번 패치에 적용하도록 하겠습니다.
감사합니다.
감사합니다.
게시판 목록
자유게시판
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 |
|
3주 전 | 58 | |
| 199718 |
|
3주 전 | 40 | |
| 199717 | 1개월 전 | 35 | ||
| 199716 |
느긋한카키쿠키
|
1개월 전 | 22 | |
| 199715 |
현대적인무질서한까마귀
|
1개월 전 | 27 | |
| 199714 | 1개월 전 | 37 | ||
| 199713 | 1개월 전 | 44 | ||
| 199712 | 1개월 전 | 306 | ||
| 199711 |
안졸리니졸리니
|
1개월 전 | 153 | |
| 199710 |
|
1개월 전 | 168 | |
| 199709 |
|
1개월 전 | 100 | |
| 199708 | 2개월 전 | 113 | ||
| 199707 | 2개월 전 | 250 | ||
| 199706 | 2개월 전 | 50 | ||
| 199705 | 2개월 전 | 35 | ||
| 199704 | 2개월 전 | 59 | ||
| 199703 | 2개월 전 | 62 | ||
| 199702 | 2개월 전 | 107 | ||
| 199701 | 2개월 전 | 118 | ||
| 199700 | 2개월 전 | 89 | ||
| 199699 | 2개월 전 | 93 | ||
| 199698 | 2개월 전 | 142 | ||
| 199697 | 2개월 전 | 105 | ||
| 199696 |
|
2개월 전 | 254 | |
| 199695 | 2개월 전 | 98 | ||
| 199694 | 2개월 전 | 130 | ||
| 199693 | 2개월 전 | 197 | ||
| 199692 | 2개월 전 | 209 | ||
| 199691 |
|
2개월 전 | 183 | |
| 199690 | 2개월 전 | 267 | ||
| 199689 | 2개월 전 | 170 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기