2013-02-20 3 views
3

나는 MySQL 서버에 의해 뒷받침되는 장고 (Django) 구동 사이트를 구축하고있다. 이 MySQL 서버는 웹 사이트가 아닌 추가 소스에서 액세스하여 테이블 데이터를 읽고 씁니다. 사용자가 로컬로 실행하여 데이터베이스에 연결하는 프로그램).Django를 MySQL 프록시 서버로 사용 하시겠습니까?

현재 로컬에서 실행되는 프로그램은 MySQL/C Connector 라이브러리를 사용하여 SQL Server에 직접 연결하고 쿼리를 실행합니다. 공개 된 최종 버전에서는 코드 나 구성 파일에있는 데이터베이스에 연결 문자열을 표시하므로 보안이 취약 해 보입니다.

내가 생각하는 또 다른 대안은 모든 검색어를 장고 웹 사이트 (사용자의 로그인과 비밀번호로 인증 됨)로 전송 한 다음 사이트가 사용자를 대신하여 위생 처리하고 쿼리를 실행하여 결과를 반환하는 것입니다.

여기에는 여러 가지 단점이 있습니다. 웹 서버는 모든 SQL 쿼리를 처리하여 훨씬 더 많은 부하를 받게 될 것이며 이는 내 호스트의 한계를 초과 할 수 있습니다. 또한, 나는 직렬화 및 파이썬에서 SQL 결과를 전송하고 C/C + +에서 클라이언트 측에 그들을 unserializing 몇 가지 방법을 알아낼 것입니다. 이것은 작성하고 유지 보수하는 데 알맞은 양의 사용자 정의 코드입니다.

사람들이 생각할 수있는이 접근 방식의 다른 단점은 무엇입니까?

이 소리가 합리적이라고 생각하니, 소리가 들리면 소리를들을 수 있습니다. 파이썬 또는 C 라이브러리와 같은 프록시 인터페이스를 개발할 수 있습니까?

나쁜 생각이 들리면 대안 솔루션 즉, 프록시 SQL 서버 로직의 이러한 유형을 전문으로하는 Python 라이브러리, SQL 연결 문자열을 암호화하는 방법 등 모든 제안을 통해 현재 솔루션을 안전하게 사용할 수 있습니다. ..?

마지막으로 유효한 문제입니까? 데이터베이스는 현재 사용자에 대해 매우 민감한 정보를 담고 있지 않습니다 (대부분의 민감한 부분은 다른 소스에서 재사용했을 수있는 이메일과 사이트 비밀번호 일 것입니다).하지만 안전하지 않은 경우 나중에 내 원인이 될 수 있습니다.

답변

1

이것은 완전히 유효한 문제이며 매우 일반적인 문제입니다. RESTful API 작성에 대해 설명했습니다. 나는 그것이 데이터베이스에 대한 프록시라고 생각할 수 있지만 보통 프록시라고는하지 않는다고 생각합니다.

장고는이를 수행하는 데 사용하는 훌륭한 도구입니다. Django는 빠른 개발을 돕는 패키지 몇 개를 가지고 있습니다. Django REST Framework, Tastiepy, django-piston이 가장 많이 사용됩니다. 물론 평범한 장고를 사용할 수 있습니다.

당신의 Django 프로젝트는 데이터베이스와 인터페이스하는 유일한 것이고 클라이언트는 인증 된 요청을 장고에 보낼 수 있습니다. 클라이언트는 절대로 데이터베이스에 직접 연결하지 않습니다. 이렇게하면 클라이언트별로 리소스별로 세분화 된 권한 제어 권한이 부여됩니다.

웹 서버에서 모든 SQL 쿼리를 처리하여 훨씬 더 큰 부하가 될 것입니다 이것은 잠재적으로

은 내가 믿는 내 호스트의 한계를 초과 할 수 스케일링 웹 서비스는 훨씬 쉽게 될 것입니다 클라이언트에서 데이터베이스로 직접 연결을 확장합니다. 데이터베이스에 초당 수백 건의 요청을 처리하는 응용 프로그램을 확장하기위한 많은 방법이 있습니다. 당신과 웹 서버 사이에 Django가 있기 때문에 자주 요청되는 리소스에 대한 캐싱을 구현할 수 있습니다.

또한, 나는이 논쟁해야 클라이언트 측에서 ++ C/C에서 그들을 일렬 화를 푸는 다음

를 직렬화 및 파이썬에서 SQL 결과를 전송하고있는 방법을 알아 내야 할 것이다 발행물. 많이 사용되는 데이터 교환 형식이 많이 있습니다. 나는 C/C++를 사용한 적이 없지만 빠른 검색을 통해 두 개의 c/C++ json 시리얼 라이저를 보았습니다. 파이썬에는 JSON이 무료로 내장되어 있습니다. 미리 작성된 C/C++ JSON 라이브러리를 사용하는 경우이를 유지 관리 할 사용자 정의 코드가 있어서는 안됩니다.

사람들이 생각할 수있는이 접근법의 다른 단점은 무엇입니까?

나는 단점이 있다고 생각하지 않는다. 그것은 진실되고 검증 된 방법이다. 그것은 십 년이 입증 된 세계에서 가장 인기있는 사이트가 편안한 API를

이 소리 합리적인합니까과를 통해 자신을 노출 그것은 않는 경우, 이 작업을 쉽게 할 수 아무것도; 파이썬 또는 C 라이브러리와 같은 프록시를 개발하는 데 도움이 인터페이스?

내가 대답의 시작 부분에서 언급 한 Django 응용 프로그램은 API를 빨리 시작할 수 있도록 보일러 판을 제공해야합니다.

+0

입력 해 주셔서 감사 드리며, 제 상황에서 어떻게 작동하는지 살펴 보겠습니다. – Alex

관련 문제