비밀번호 특정 횟수 이상 틀렸을때 차단 소스 5.4용 없을까요?

비밀번호 특정 횟수 이상 틀렸을때 차단 소스 5.4용 없을까요?

QA

비밀번호 특정 횟수 이상 틀렸을때 차단 소스 5.4용 없을까요?

답변 2

본문

그누보드4 시절 소스인데요.

 

그누보드5.4에도 어울리게 수정되면 누구나 사용가능하도록 하면 좋을 것 같은데...

 

아쉬워요. 이건 필수인 것 같아요!

 

/extend/ar.hack.passwd.php

 

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 
/*
제목 : 그누보드 비밀번호 해킹 차단 툴 (extend 등록파일)
출처 : 로빈아빠 freeimage.kr 2011-11-19
목적 : 암호 해킹 시도시 IP 차단 (로그인 스크립트로 암호를 찾아내려는 경우)
설치 : 첨부파일 ar.hack.passwd.php 을 extend 에 넣어둠
다운 : http://freeimage.kr/bbs/board.php?bo_table=tip_gnu (업데이트)
설명 :
1) 로그인시 암호를 잘못입력하는 경우 기록파일에 저장을 한다.
2) 한IP에서 일정시간동안 정해진수 이상 로그인을 시도하면 로그인과다로 표시하고 종료한다.
   레벨이 8 이상인 경우 접속제한수가 2배로 됨..
3) 종료시 로그인 시도 담당자와 관리자에게 쪽지를 보낸다.
4) 로그인성공시 실패 기록을 삭제한다.
5) 접속제한수는 제한은 20회 IP차단은 50회 로되어있습니다. 소스에서 수정가능
 $max_limit_out=30; //하루동안 50번이상 시도하면 ip를 접근차단으로 지정하고 종료함..
 $max_limit_warn=20; //하루동안 20번이상 시도하면 접속을 종료하고 로그인 시도 담당자와 관리자에게 쪽지를 보냄

*/
if (strstr($PHP_SELF,"login_check.php") && $_POST[mb_id]) {
 $max_limit_out=30; //하루동안 50번이상 시도하면 ip를 접근차단으로 지정하고 종료함..
 $max_limit_warn=20; //하루동안 20번이상 시도하면 접속을 종료하고 로그인 시도 담당자와 관리자에게 쪽지를 보냄
 
 $mb=sql_fetch("select mb_id,mb_password,mb_level from $g4[member_table] where mb_id='$_POST[mb_id]' limit 1");
 if ($mb[mb_level]>=8) {
  $max_limit_out=$max_limit_out*2;
  $max_limit_warn=$max_limit_warn*2;
 } 
 $key1=date("ymd")."|$_SERVER[REMOTE_ADDR]";
 $ty_password=sql_password($_POST[mb_password]);
 if ($mb && $mb[mb_password]==$ty_password) {
  sql_fetch("delete from $g4[point_table] where mb_id='$mb[mb_id]' and po_rel_table='_check' and po_rel_action='$key1'");
 }
 else if ($mb && $mb[mb_password]!=$ty_password) {
  $row=sql_fetch("select count(*) as cnt from $g4[point_table] where mb_id='$mb[mb_id]' and po_rel_table='_check' and po_rel_action='$key1'");
  if ($row[cnt]>$max_limit_out) {
   //접근차단 지정
   if (!strstr($config[cf_intercept_ip],$_SERVER[REMOTE_ADDR])) {
    if ($config[cf_intercept_ip]) $config[cf_intercept_ip].="\n";
    $config[cf_intercept_ip].=$_SERVER[REMOTE_ADDR];
    $sql="update $g4[config_table] set cf_intercept_ip='".mysql_escape_string($config[cf_intercept_ip])."'";
    //echo $sql;
    sql_query($sql);
   }
   //alert("접근시도 과다. 접근차단 됨");
   exit;
  }
  // 포인트 건별 생성
  $sql = "insert into $g4[point_table] set 
    mb_id = '$mb[mb_id]',
    po_datetime = '$g4[time_ymdhis]',
    po_content = '".addslashes("로그인시도:$_SERVER[REMOTE_ADDR] $_POST[mb_password] $_SERVER[HTTP_USER_AGENT]")."',
    po_point = '0',
    po_rel_table = '_check',
    po_rel_id = '$mb[mb_id]',
    po_rel_action = '$key1' ";
  sql_query($sql);
  //접근이 너무 많음 차단함..
  if ($row[cnt]>$max_limit_warn) {
   $tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
   $me_id = $tmp_row[max_me_id] + 1;
   // 본인에게 쪽지보냄
   $sql = " insert into $g4[memo_table]
       ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
      values ( '$me_id', '$mb[mb_id]', '$mb[mb_id]', '$g4[time_ymdhis]', '로그인시도:$row[cnt]회 (시도암호:$_POST[mb_password] $_SERVER[REMOTE_ADDR])\n$_SERVER[HTTP_USER_AGENT]' ) ";
   sql_query($sql);  
   // 관리자에게 쪽지보냄
   if ($mb[mb_id]!=$config[cf_admin]) {
    $tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
    $me_id = $tmp_row[max_me_id] + 1;
    // 쪽지 INSERT
    $sql = " insert into $g4[memo_table]
        ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
       values ( '$me_id', '$config[cf_admin]', '$mb[mb_id]', '$g4[time_ymdhis]', '로그인시도:$row[cnt]회 (시도암호:$_POST[mb_password] $_SERVER[REMOTE_ADDR])\n$_SERVER[HTTP_USER_AGENT]' ) ";
    sql_query($sql);  
   }
   alert("로그인 실패 횟수를 초과했습니다. 다음날 로그인을 시도해주세요.  ($row[cnt]/$max_limit_warn)");
   exit;
  }
 }
}
?>

 

 

5.4용으로 변경되면 모든 사이트에 다 적용하면 좋을 것 같습니다

 

정말 좋은 플러그인인데, 5.4 용은 하나도 없어서 아쉽다고 생각해요!

이 질문에 댓글 쓰기 :

답변 2

아래 좌표에서 1000포인트에 판매하네요.

http://amina.co.kr/bbs/board.php?bo_table=skin_member&wr_id=10738

우성님이라면 충분히 만드실수 있으리라 믿습니다!

줄서봅니다~~

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 142
© SIRSOFT
현재 페이지 제일 처음으로