저는 Codeigniter 1.7을 사용하고 있습니다. 누구나 CodeIgniter 프레임 워크에서 PHP로 웹 서비스를 만드는 경험이 있습니까? 웹 서비스를 구현할 때 고려해야 할 보안 조치는 무엇입니까? API 키로 인증을 제공하는 방법?Codeigniter 웹 서비스
어떤 아이디어?
저는 Codeigniter 1.7을 사용하고 있습니다. 누구나 CodeIgniter 프레임 워크에서 PHP로 웹 서비스를 만드는 경험이 있습니까? 웹 서비스를 구현할 때 고려해야 할 보안 조치는 무엇입니까? API 키로 인증을 제공하는 방법?Codeigniter 웹 서비스
어떤 아이디어?
당신이 문의하는 웹 서비스의 종류에 따라 다릅니다. 예를 들어 웹 서비스가 데몬이 될 것입니까? 또는 전형적인 온라인 웹 서비스. 이 중 하나의 경우 RESTful 유형을 구현해야합니다. RESTful은 상태 비 저장 연결을 의미합니다. API 키가 사용되는 곳입니다. 예를 들어 사용자를 식별합니다.
다행히도 Codeigniter는 많은 라이브러리와 확장 기능을 가진 코드입니다. 이러한 라이브러리의 예는 다음과 같습니다. https://github.com/philsturgeon/codeigniter-restserver
이제 보안 문제로 API 키가 세션 또는 모든 상태를 대체합니다. 당신은 API에 대한 완전한 확인을해야 할 것입니다. API를 구현하는 많은 사이트는 동일한 최종 결과에 대해 서로 다른 솔루션을 제공합니다.
API 키를 통한 인증은 간단합니다. 저장소 유형 (데이터베이스)에 대해 확인합니다.
는 여기에 튜토리얼을 사용하여 CodeIgniter를하고 라이브러리는 이전에 링크 :
이 http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/ 다소 모호 할 수도 있지만, 어떤 특정 문제가 그나마 나 때문에 겉보기로 하드를 필요로한다.
편집 : 아이폰 응용 프로그램은 또한 당신의 서비스가 제공하는 사용자 기능을 모두 사용할 수 있도록이 편안한 인터페이스를 구현 좋을 것이다이 경우
. 가장 좋은 방법은 모든 것을 한 방향으로 접근 가능하게 만드는 것입니다. 아이폰 연결과 웹 연결에 다른 컨트롤러/모델이 없다는 것을 의미합니다. 이 요청의 이러한 유형을 수행하기위한 단지 작은 예를 들어 지금
<?php
class Auth extends CI_Controller{
public function login(){
//Check if their accessing using a RESTful interface;
$restful = $this->rest->check();
if($restful){
//Check for the API keys;
$apiKey = $this->input->get('apiKey');
$secretKey = $this->input->get('secretKey');
//If you have any rules apon the keys you may check it (i.e. their lengths,
//character restrictions, etc...)
if(strlen($apiKey) == 10 and strlen($secretKey) == 14)
{
//Now check against the database if the keys are acceptable;
$this->db->where('apiKey', $apiKey);
$this->db->where('secretKey', $secretKey);
$this->db->limit(1);
$query = $this->db->get('keys');
if($this->db->count_all_results() == 1)
{
//It's accepted the keys now authenticate the user;
foreach ($query->result() as $row)
{
$user_id = $row->user_id;
//Now generate a response key;
$response_key = $this->somemodel->response_key($user_id);
//Now return the response key;
die(json_encode( array(
'response_key' => $response_key,
'user_id' => $user_id
)
)
);
} //End of Foreach
}//End of Result Count
}//End of length/character check;
} else {
//Perform your usual session login here...;
}
}
}
?>
:
그래서 예를 들어 다음과 같은 컨트롤러를 가질 수있다. 이는 모든 유형의 컨트롤러에 적용될 수 있습니다. 비록 여기에 몇 가지 옵션이 있습니다. 모든 요청을 apikey 및 비밀을 매번 전달하고 매 요청시이를 확인할 수 있습니다. 또는 일단 각 요청이 처음 허용되면 허용 목록에 포함될 수 있으며, 반대의 목록에는 블랙 목록이 표시 될 수 있습니다. 이 도움이희망, 다니엘
고맙습니다 Daniel.I've 하나의 웹 application.I 웹 서비스를 사용하여 내 애플 리케이션을위한 모바일 앱 (아이폰)를 구현하고자합니다. 그래서 나에게 어떤 아이디어라도 제안 할 수 있니? – siva565
내 대답이 업데이트되었습니다. – Daniel