2012-04-12 2 views
-1

기본적으로 며칠 전에 내 웹 사이트 고객 중 한 명이 내게 와서 데이터베이스와 웹 사이트가 해킹 (해커가 데이터베이스에서 md5 해시 된 비밀번호를 훔쳐 갔다)하고 관리자 패널에 로그인했으며 데이터가 변경되었다고 말했습니다. 음, 그래, 나는 1 년 반 전에 그 페이지를 만들었으므로 나는 더 잘 모른다. hash 또는 소금. 어쨌든, 그들은 어떻게 데이터베이스를 해킹합니까? 기본적으로, 거기에 대한 보호가 있습니까? 또는 JavaScript 코드를 사용하고 있습니까?로드 할 수 없도록해야합니까?어떻게 해커가 웹 사이트를 해킹하고 있습니까?

이 질문에 대해 도움을 주실 수 있기를 바랍니다. 더 많은 보호 웹 사이트를 만들 수 있기를 바랍니다.

이것은 해당 사이트의 이전 로그인 코드입니다. 요청 당 추가됨 -

public function loginUser($username, $password) { 
    if(isset($_POST['login'])) { 
     if($username != '' && $password != '') { 
     $sql = "SELECT * FROM `users` WHERE `username` = '".$username."' AND `password` = '".$password."'"; 
     $q = mysql_query($sql); 
     $row = mysql_fetch_array($q); 
     if(mysql_num_rows($q) > 0) { 
      if($row['level'] == 'admin') { 
      $_SESSION['user_level'] = 'admin'; 
      } 
      else { 
      $_SESSION['user_level'] = 'normal'; 
      } 
      $_SESSION['logged_in'] = 1; 
      header('location: account.php'); 
     } 
     else { 
      header('location: error2.php'); 
      // Return to page and show error 
     } 
     } 
     else { 
     header('location: error1.php'); 
     // Show error, when people have empty fields entered 
     } 
    } 
+1

지금까지 제공된 정보에 대한 질문은 너무 광범위하기 때문에 구체적으로 대답 할 수 없습니다. – hakre

+0

아마 SQL 인젝션을 통해. 코드 없이는 전혀 말할 수 없습니다. 또한 관리자 콘솔에 대한 로그인을 도난 당했을 수 있습니다. –

+1

그래서 무작위로 사이트를 해킹하는 방법을 묻고 있습니까? 어떤 정보없이 문제가 무엇인지 알 수있는 사람은 누구입니까? 가능한 모든 해킹 목록이 여기에 무엇을 기대합니까? 그것은 어색한 것일 것입니다 :) – Nanne

답변

1

더 많은 정보가 없어도 확실하게 말할 수는 없지만 대부분의 경우 응용 프로그램이 SQL injection에 취약하여 공격자가 사이트의 데이터베이스 내용을 표시 할 수있었습니다. 또 다른 가능성은 directory traversal attack이 DB 파일을 직접 다운로드 할 수 있다는 것입니다.

MD5가 이제 완전히 깨 졌으므로 (소금을 사용하든 MD5와 관련하여 더 이상 중요하지 않든) 나머지는 간단합니다.

+0

md5가 더 이상 중요하지 않은 이유는 무엇입니까? 어떤 주장? – Paul

+0

@ Paul 아마존 EC2와 같은 것들 덕분에 MD5 해시가 가장 길고, 최소한 8-9-10 자까지 쉽게 계산되고 일치 될 수 있습니다. (http://www.codinghorror.com/blog/2012/04/ speed-hashing.html). – DampeS8N

+1

@Paul MD5는 상대적으로 짧은 시간에 bruteforced 할 수 있습니다. Jeff Atwood는 벤치마킹으로 좋은 블로그 게시물을 작성했습니다. http://www.codinghorror.com/blog/2012/04/speed-hashing.html –

0

당신은 SQL 인젝션에 대해 읽어야합니다. (데이터베이스에서 정보를 얻은 방법 일 수도 있습니다.)

그런 다음 XSS를 살펴보아야합니다.

먼저해야 할 일은 모든 입력을 확인하는 것입니다.

SQLi에 대해서는 준비된 문장을 사용해야합니다.

그리고 XSS에 대해 모든 것을 인코딩해야합니다!

하지만 이봐, 걱정할 필요는 없다.

+0

약간 정리하고 유용하게 사용하면 취소하지 않을 것입니다. – DampeS8N

+0

좋습니다, 감사합니다! 유용한 답을 주어야합니다. – Paul

관련 문제