2013-01-14 2 views
2

Blue라고하는 응용 프로그램을 만들려고한다고 가정 해 봅니다. Blue는 모든 웹 사이트의 배경을 파란색으로 바꾸는 Ruby on Rails 응용 프로그램입니다. 또한 사용자가 로그인하여 방문한 웹 사이트를 추적하고 파란색으로 변하게 할 수 있습니다.Rails의 하위 도메인 보안

웹 사이트의 배경 웹 사이트를 파란색으로 바꾸기 위해 <link HREF="http://www.example.com/blue.css" type="text/css">을 응답 본문에 삽입하는 웹 프록시를 만들었습니다. 프록시는 랙 응용 프로그램으로 구현되고 Rack in Rails 3 Railscast에서 접근 방식을 사용하여 레일 노선의 내부에 배치되어

root :to => BlueProxy, :constraints => { :subdomain => "proxy" } 

나는이 방법으로 보안에 대해 우려입니다. 내 응용 프로그램에서 쿠키의 도메인은 기본적으로 .example.com이 될 것이라고 알고 있습니다. 사용자가 악성 URL을 입력하면 웹 사이트에서 사용자의 계정을 조작 할 수 있습니다. 응용 프로그램의 쿠키에 대해 www 하위 도메인 만 허용하여이 문제를 해결할 수 있습니다. 그러나 프록시가 프록시 사이트에도 쿠키를 저장할 수 있기를 바랍니다.

  1. 이 나쁜 방법입니다 : 여기

    내 세 가지 질문입니까? 이 문제를 해결할 더 좋은 방법이 있습니까?
  2. Rails에서 형제 하위 도메인 쿠키를 분리하는 가장 좋은 방법은 무엇입니까?
  3. 누락 된 보안 문제가 있습니까?

답변

0

이 방법은 위험하다, 나는 몇 가지 이유에 프록시를 실행에 당신을주의 :

  1. 그것은 자신에 대한 호스팅 콘텐츠에 대한 불법 콘텐츠에 액세스 사람들에 이르기까지 법률 문제의 호스트를 제공합니다 이익 (및 수정).
  2. 사이트가 인기를 얻으면 대역폭 (및 호스팅 비용)이 폭발적으로 늘어납니다.
  3. iframe 내부에 내용을로드하는 데 ux 문제가 있습니다. 예를 들어 브라우저 뒤로 버튼이 사용자가 원하는만큼 성능이 좋지 않습니다.
  4. 프록시를 실행하면 보안 측면에서 고려해야 할 여러 가지 공격 경로 (예 : 사이트를 통해 프록시 된 악의적 인 사이트에 퍼머 링크를 보내는)가 사이트에 추가로 열립니다.

백 엔드에서 오픈 프록시를 실행하는 대신 (어쩌면 완전히 열리지는 않았지만 다른 사람이 가입하는 것이 얼마나 어렵습니까?) 프런트 엔드에서 브라우저 확장 또는 greasemonkey 스크립트 사용을 고려해보십시오 레일즈 애플리케이션에서 규칙 세트를 얻은 다음 클라이언트 측에서 스타일 시트 변경 사항을 추가 할 수 있습니다.

+0

이들은 모두 훌륭한 점입니다. 나는 프록시가 DMCA의 세이프 하버 조항에 포함되는 것으로 생각했습니다. 웹 사이트를 의도 한 용도로 사용할 때 콘텐츠를 수정 (예 : 배경을 파란색으로 바꾼다)하는 데 문제가 있는지 알고 있습니까? 2.이를 완화하기 위해 비 차단 이벤트 기반 서버를 사용할 수있는 방법이 있습니까? 그렇게하면 외부 서버에서 페이지를 제공하기 위해 대기하는 동안 들어오는 요청을 처리 할 수 ​​있습니다. 3. iframe 콘텐츠와 브라우저 기록을 동기화하는 JavaScript 솔루션을 구현하려고했습니다. 4. 이것에 대한 좋은 자료를 가르쳐 주시겠습니까? – LandonSchropp

+0

불행히도 브라우저 확장 또는 greasemonkey 스크립트는 내 프로젝트에서 실행 가능한 옵션이 아닙니다. 최신의 모든 브라우저와 가장 인기있는 모바일 장치에서 작동해야합니다. – LandonSchropp

+0

개인적으로, 모든 현대 브라우저/어플 라이언 스에서 작동하는 것으로 개인적으로 우선 순위를 정했습니다.가장 쉬운 솔루션은 확장 기능입니다. MVP의 한 브라우저에서 제공하는 가치를 확인한 다음 최상의 경로 전달 방식이 여러 개의 확장/앱 또는 프록시 솔루션인지 결정하는 것이 어떻습니까? 다른 질문에 답하기 위해 법률 및 부하 영향을 완화 할 수 있지만 대역폭 및 비용 문제를 완화하려면 매우 창의적이어야하며 힘든 전투가 될 것입니다. 성공적인 확장 솔루션의 예를 보려면 LastPass를 살펴보십시오. –