2012-12-12 2 views
0

사용자가 자신의 컴퓨터에서 다운로드하여 실행할 수있는 데스크톱 응용 프로그램을 만들었습니다. 이 응용 프로그램은 네트워크 액세스가 필요하며 업데이트, 삽입 등으로 데이터베이스에 변경 사항을 보냅니다.사용자가 내 데이터베이스에 안전하게 연결할 수 있도록하려면 어떻게합니까?

응용 프로그램에 암호를 직접 보관하면 응용 프로그램이 디 컴파일되므로 사용자가 다음 작업을 수행 할 수 있습니다. 데이터베이스의 자격 증명을 확인하고 모든 권한을 얻으십시오.

GET 및 POST와 API를 서버 측에서 사용하는 유일한 방법은 안전한가요? 다른 옵션이 있습니까?

답변

1

그래서 여기에는 2 가지 문제가 있습니다. 1) 사용자가 서버 측 PHP/데이터베이스에 POST 업데이트를 발행하는 것을 인증합니다. 2) 데이터베이스 자격 증명이 노출되지 않도록 방지합니다.

1) LDAP와 같은 타사 통합 서버로 사용자를 인증하고 있습니까?

2) 서버 자격 증명은 필요하지 않으므로 애플리케이션에 저장하면 안됩니다. 사용자와 요청을 인증하면 서버 측 PHP는 DB 자격 증명을 암호 해독하고 사용자가 제출 한 정보를 기반으로 SQL 문을 발행하는 보안 기능을 가져야합니다.

질문에 대답하려면 네, 들어오는 요청을 처리하기 위해 서버 측 프레임 워크를 호스트하는 것이 가장 좋습니다. 그러면 사용자를 인증 한 다음 요청을 실행합니다.

데스크톱 응용 프로그램에서 DB를 직접 업데이트 할 수있게하려면 (권장되지 않음) DB 자격 증명의 암호화 된 해시를 저장하고 해독 알고리즘을 사용하여 해독 한 다음 데이터베이스로 보낼 수 있다고 가정합니다.

<?php 
    if(isset($_POST['query'])) { 
     $query = $_POST['query']; 
     $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

     //Execute SQL 
     if($mysqli->query($query) === TRUE) { 
      $mysqli->close(); 
      echo "successful"; 
     } else { echo "SQL execution error"; } 
    } else { 
     echo "invalid query string"; 
    } 
?> 
+0

인증은 별개의 문제입니다. (누가 내 요청에 문제를 제기하든 상관 없으므로) 그렇지만 # 2는 내가 얻었던 것입니다. 해시를 저장하는 한 서버에 암호 해독 알고리즘을 저장하지 않으면 여전히 안전하지 않습니다. – sdasdadas

+1

사실입니다 ... PHP가 서버에 설치되어있는 경우 데스크톱 응용 프로그램에서 생성 된 _POST [ 'query'] 문자열을 받고 해당 서버에 저장된 데이터베이스 자격 증명을 사용하여 실행하는 간단한 PHP 페이지처럼 간단 할 수 있습니다 측면. – jamis0n

+0

가장 단순한 PHP 페이지로 답변을 업데이트했습니다. :) – jamis0n

1

왜 프록시 웹 서비스를 만들지 않습니까? 클라이언트 응용 프로그램이 요청을 보내면 웹 서비스가이를 가져 와서 데이터베이스에서 안전하게 실행합니다.

+0

그게 올바른 생각이었습니다. 나는 정보를 노출시키지 않고 그것을 다루는 또 다른 방법이 있다면 대부분 궁금했다. – sdasdadas

관련 문제