2012-07-09 3 views
1

이 나는 ​​사용자 상호 작용을위한 데이터베이스를 처음으로하게되고 좀 "바보"질문이 있지만 나는 그래서 여기에 정확한 답을 가지고 그들을 구글하는 방법을 모른다 :모바일 앱에서 mysql을 사용하여 사용자를 연결하는 방법은 무엇입니까? 로그인 권한은

내가 원하는 :

글을 작성한 사용자가있는 데이터베이스가 있어야합니다. 이름과 주소, 신용 카드 등 사용자가 중요한 정보를 복구해야합니다. 내가

나는 그것의 정보를 사용자를위한 테이블이있는 데이터베이스를 생성해야하고 의견이있는 테이블과 기사를 가진 다른 관련했을 무엇

.

내 문제

1) 당신은 DB 연결을 수행 할 때, 당신은 동일한 사용자 (물론하지 루트)로 모든 시간을 할 다음이 별명을 비교하고 통과합니까? 그게 내가 가지고있는 것입니다. 그러나 누군가 내 사용자를 알고 db에 연결하기위한 패스가 모든 정보를 갖기 때문에 저에게는 꽤 이상합니다. 각 사용자에 대한 계정을 가지고 있지만 그 다음에는 계정을 지우기/추가하는 방법을 제한 할 수있는 방법이 있습니까?

2) 몇 가지 질문을 읽었으며 암호를 저장하고 bcrypt와 비교해야한다는 것을 알고 있습니다. 또한 나는 신용 카드를 저장할 확률이 높지 않기 때문에 그것을하지 않을 것이지만 나머지 것들 (주소, 이름)을 저장하는 가장 좋은 방법은 무엇입니까?

3) 사용자가 연결을 수행하고 잠시 더 많은 작업을 수행 할 가능성이 높을 때마다 매번 연결을 닫고 열어 보는 것이 좋습니다. 세션을 어떻게 제어 할 수 있습니까? PHP에서 모바일 장치를 mysql에 연결하는 코드가 작성되었습니다.

답변

1

먼저 신용 카드를 자신의 데이터베이스에 저장하지 마십시오. stripe과 같은 것을 사용하여 데이터를 토큰 화하십시오 (무료 가입 및 모든 사람이 수락됩니다).

사용자 이름과 비밀번호로 모바일 앱을 운영하는 경우 사용자 이름/비밀번호가있는 원격 서버가 필요합니다. 해시는 한 가지 방법이므로 암호 해독은 암호보다는 암호에 더 나은 방법입니다 (암호가 일치하는지 알 수 있지만 암호는 문자열로 검색 할 수는 없습니다).

데이터베이스에 연결하는 경우에는 직접 연결하지 마십시오. 서버의 API/웹 서비스를 통해 수행하십시오.

서버에서 정보를 얻으려면 json을 사용하고 GET 및 POST 요청을 사용하는 것이 좋습니다.다음은 서버에 로그인 요청을 처리하기위한 간단한 예입니다 (장치에서 게시물을) : 나는 완전히 auth_model, 소독제 및 other_model을 만들어

<?php 

if(isset($_POST['username']) && isset($_POST['password'])) 
{ 
    //See if the user's auth details are valid 
    $auth = auth_model::try_auth(sanitizer($_POST['username']), sanitizer($_POST['password'])); 

    //If valid 
    if($auth) 
    { 
    echo json_encode(other_model::some_function_that_returns_array()); 
    exit; 
    } 
    else 
    { 
    echo json_encode(array('error' => 'Authentication failed.')); 
    exit; 
    } 
} 

주, 그들은 예를 들어 단지가있다.

대부분의 언어/플랫폼에는 json을 사용하기위한 라이브러리가 있으며 단순한 형식이므로 시작할 때 가장 쉬운 방법이라고 생각합니다.

세션/상태의 경우 세션을 데이터베이스 테이블에 저장하고 id (보안이 필요하지 않은 항목) 만 클라이언트에 반환하십시오.

+0

그래서 나는 세션이있는 테이블을 만들어야한다고했습니다. 나는 user/pass를 비교할 것이고,이 "session table"에 저장 될 난수를 만들 것이다. 이 작업을 수행 한 후이 번호를 모바일 앱에 보내고 모바일 앱이 연결을 원할 경우이 번호, IP 및 날짜를 ​​찾습니다. 이 ID의 경우 ip는 같고 날짜는 마지막 연결이 지워진 후 20 분보다 작으며 다른 하나를 만듭니다. 괜찮 니? –

+0

클라이언트는 세션 ID 만 저장해야합니다. IP, 날짜 및 사용자 에이전트를 데이터베이스에 저장하여 클라이언트가 자신이 누구인지 생각할 수 있는지 확인할 수 있습니다. 나는 당신이라면 쿠키/세션에 대한 독서를하고 싶습니다. http://hc.apache.org/httpcomponents-client-ga/tutorial/html/statemgmt.html –

1

앱에서 MySQL 서버에 직접 연결하면 안됩니다. 보안상의 큰 차이가 있습니다. 사용자 또는 해커는 자격 증명을 얻기 위해 트래픽을 스니핑하거나 앱을 해체하여 앱을 가져올 수 있습니다. 대신 PHP와 HTTPS 보안 HTTP POST를 통해 서버 쪽에서 처리하십시오.

MySQL 서버에 앱의 모든 사용자에 대해 사용자를 자동으로 추가 할 수는 있지만 그 방법은 더 복잡 할 수 있습니다.

+0

내 아이디어는 사용자로 모바일 앱에서 일부 정보를 보내거나 https를 통해 연결을 수행 한 다음 https를 통해 앱으로 정보를 검색하는 PHP 파일로 전달하는 것이 었습니다. 좋은 모범을 아십니까? –

관련 문제