2013-02-10 1 views
1

이 질문은 내가 가진 직업 인터뷰에서 비롯된 것입니다. 면접관은 내가 만든 웹 사이트에 대해 물었다. 나는 학교를 쉬다가 여전히 더 잘 알지 못했기 때문에 많은 일을 잘못하고 있었고 에는 물어볼 사람이 없었습니다. 화이트 보드의 인터뷰 담당자에게 웹 사이트를 열었을 때 그는 놀랐다. 나는 데이터베이스에 액세스하기 위해 웹 서비스를 사용하지 않았다. 그는 이것이 안전하지 않다는 것을 건의했다 그러나 세부 사항으로 들어가지 않았다. 그들은 결코 보안 조치로 이것을 수행하기 위해 을 발생시킨 적이 없다고 생각했고 나는 그것을하지 않는 것이 잘못되었다고 생각했습니다. 내 코드는 모두 하나의 페이지였습니다. 아니 MVC, 내 PHP 연결 및 모든 내 PHP/MySQL을 선택, 삽입, 등등 내 HTML/자바 스크립트와 다른 모든 (같은 이유로 여러 가지 이유로 잘못된 순간에 ) 같은 파일에 PHP로 작성되었습니다. 내 페이지가 https로 보호되어있어 충분하다고 생각했습니다. 또한 그걸 다시 보면 내 데이터베이스가 localhost에 있다는 것을 알지 못했을 수 있습니다. 그 질문에 혼란 스러움이 내 지식 부족으로 인해 지금은 입니다.왜 비누가 안전합니까? HTTPS가 아닌 이유는 무엇입니까?

실제 질문 (내가 추측)이 있어야한다. 비누 연기 같이 웹 서비스가 있어야 내 데이터베이스 사이에 안전한 사이트를 만들 수있다 (심지어 로컬 호스트 였지만)? 내 가정은 비누 서버가 모든 mysql 문을 수행하고 내가 관심있는 값을 반환 할 것입니다. 또는 SAOP 서버가 mysq 함수와 값을 실행하도록 할 것입니다 (어느 것이 실제 보안을 추가한다고 생각합니까?) 값). 나는 서버 측 PHP와 https를 사용했기 때문에 안전한 것으로 생각했다. (mysql 인젝션과 같은 것 이외에도 ) mysql_real_escape_string()과 같은 다른 것들을 가지고 있었다. 과 다른 것들). 짧은 내 질문에

메인 페이지 파일 및 실제로 PHP는 MySQL의에게와 https 로컬 호스트 추가 보안 값에 선택 문을했다는 것을 파일 사이에 물건을 분리하는 비누를 사용하는 것입니다. 그냥 PHP를 에 연결 한 다음 MySQL 서버를 사용하여 https로 보호 된 페이지가있는 일부 mysql 함수를 실행할 수 없었습니까? 그게 안전하지 않니?

MVC 모델을 사용하지 않는 것 외에도 https 대 SOAP에 대한 몇 가지 현명한 조언을 제공 할 수 있습니까?

저는 PHP에서 자율 학습을하려고합니다. 나는 주로 스크립트를 쓰는 다른 언어로 일하고있다. 저는 PHP에 대한 열정이 있지만 배우기를 원하지만 어디서 확실하게 돌아야할지 모릅니다.

감사

+0

여기에서 묻고있는 것을 이해하는 것이 다소 어렵습니다. 나는 읽기 쉽고 이해하기 쉽게하기 위해 첫 단락을 편집하려고 시도했지만, 제시하려고했던 상황을 정말로 파악할 수 없었습니다. 설명을 명확히하기 위해 의사 코드를 편집 해보십시오. 의사 코드를 사용하여 설명하려는 것을 설명하십시오. –

+0

감사합니다. 가까운 시일 내에 수정 해 드리겠습니다. –

+0

@HarryFairbanks : 내가 downvoted 하나지만, 일단이 게시물에 대한 편집이 의견에 회신 아니에요. 근본적으로 가치있는 것을 묻고 있습니다. 편집 된 질문이 명확하고 요점은, 내가 upvote거야. –

답변

1

당신은 당신의 데이터베이스에 대한 액세스를 보호하는 개념을 혼합하고 웹 서비스에 대한 액세스를 보호합니다.

사용중인 웹 서비스 아키텍처 (SQL 삽입 방지, 확실하게 자격 증명 노출 안 함, 방화벽을 통해 웹 서비스 서버에서 물리적으로 DB 분리 등)에 상관없이 데이터베이스를 보호하기위한 모범 사례를 따라야합니다.).

웹 서비스가 일반 대중이 사용할 수 없으면 웹 서비스에 대한 액세스를 별도로 제어해야합니다. SOAP와 REST는 모두이를 수행 할 수있는 견고한 메커니즘을 제공합니다.

SOAP 자체는 서버의 파일에 대한 액세스를 보호하지 않습니다. 웹 서비스에 대한 액세스를 보호하는 메커니즘을 제공합니다.

UPDATE

웹 사이트 및 "보안"을 위해 데이터베이스와 웹 서비스를 요구하는 바보 같은 개념이다. 웹 서비스는 보안 계층이 아닌 기능에 액세스하기위한 대체 인터페이스로 간주되어야합니다.

실제로 웹 서비스를 공개하지 않는 한 해커는 웹 사이트가 아닌 웹 서비스를 공격합니다. 공개적으로 볼 수 없게 숨기면 무익한 엔지니어링 노력에 투자 한 것입니다.

아키텍처 측면에서 볼 때 레이어가 동일하거나 다른 컴퓨터에서 실행되는지 여부와 상관없이 사용자 인터페이스에서 데이터 액세스를 분리하는 것이 좋습니다. ASP.Net 세계에서 Repository and Unit of Work 패턴은 매우 일반적입니다. PHP에서 일반적으로 사용되는 패턴을 잘 모르겠습니다. DB 격리만을위한 별도의 웹 서비스를 만드는 것은 확실히 그런 패턴이 아닙니다.

+0

감사합니다.이 질문은 내 질문에 답변하고 혼란을 밝힙니다. –

관련 문제