2011-04-28 9 views
1

내 응용 프로그램에 가능한 한 적은 정보를 제공하여 웹 사이트 또는 서버에서 대부분의 데이터를 가져올 수 있기를 기대하며 현장 경험이있는 모든 사람의 조언과 권고를 듣고 싶습니다. 신청. 응용 프로그램이 사이트에서 데이터를 가져 오는 중입니까?

  • 이 (유효한 사용자없이 작동하지 않는 응용 프로그램 패스) 사용자가 입력에 사용자 이름과 암호를 사용하여 응용 프로그램을 시작하고 로그인을 클릭하려면

    현재 내 인증으로 구성되어 있습니다.

  • HTTPS을 사용하여 자격 증명을 내 로그인 페이지로 보내고, 스크립트는 SSL 연결 및 개인화 된 사용자 에이전트 이름 만 허용합니다.
  • 로그인 페이지는 자격 증명을 확인하고 세션과 일부 초기 데이터를 되돌려 보냅니다.
  • 시간이 지남에 따라 또는 필요에 따라 더 많은 데이터를 수집하기 위해 세션을 다시 사용합니다.

사이드 참고 :는 SSL 256 비트, 세션 자동 당겨 몇 분 위의 기본 authetication를 들어

및 데이터 후에 만료 당신이 다른 어떤 것도 구현을 추천 할 것입니다?

아무 것도 변경해야합니까?

보호

2 층

이제

내가, 내 응용 프로그램에 /에서 전송 된 모든 데이터를 암호화하여 내 질문에 더 보안을 구현하고 싶습니다 :

  • 내가 암호화하고 해독하는 데 사용한다 무엇을 데이터, 쌍방의 개인 키와 공개 키 또는 RIJNDAEL의 방법?
  • 클라이언트와 서버에 남겨 두어야 할 정보의 올바른 방법 또는 부분은 무엇입니까? 아니면 공용 암호 또는 키에 대한 지식을 어떻게 구성해야합니까?

    예를 들어 한 쌍의 RSA 키를 사용하는 경우 C#의 공개 키를 사용하여 데이터를 해독 할 수 없으므로 클라이언트와 개인 키에 1 개의 개인 키를 남겨 두어야합니다. 서버와 Rijndael은 양쪽에 IV와 키가 있어야합니다.

    이러한 문제를 처리하는 적절한 방법은 무엇입니까?

나는 실제적인 독서 자료, 의견, 예제, 제안을 매우 기쁠 것은 :)

UPDATE를 조언을 :

아무도 아무 말도하고 싶어? 나는이 질문에 대한 더 많은 정보를 얻기를 원했고, 또한이 방법은 주위에 상당히 사용되는 방법이라고 힘들었다. ...

답변

1

방금 ​​방정식의 앱 측면의 보안을 고려한 것처럼 들린다. 방정식의 웹 사이트 부분에 당신의 생각을 돌리는 것이 좋습니다.나는 보안 볼 때

, 난 항상 두 가지를 살펴 보자

  • 전송 보안은 데이터가 운반 중에 보호 --is? 서버의 SSL 인증서에 대해 충분한 키 길이를 사용한다고 가정 할 때처럼 들립니다. 또한 웹 사이트가 SSL 핸드 셰이크의 일부로 클라이언트 인증서 유효성 검사를 수행하도록 할 수 있습니다. 이렇게하면 아무도 클라이언트 응용 프로그램을 스푸핑 할 수 없으며 웹 사이트에서 정보를 공유하도록 설득 할 수 있습니다.
  • 페이로드 보안 - 데이터 페이로드를 암호화해야합니까? 누군가가 귀하의 웹 서버에 침입 할 수있는 기회가 있습니까? 아니면 DNS 중독이나 다른 방법을 통해 귀하의 앱이 유효한 cn의 악성 서버에 연결하도록 유도하지만 다른 HTTP 인증서 ? 페이로드를 암호화하도록 선택하면 이미 사용중인 것과 동일한 인증서로 전체 내용을 피기 백 할 수 있습니다. 인증서에 데이터 암호화 비트가 설정되어 있는지 확인하고 인증서의 개인/공개 키를 사용하여 페이로드를 암호화 할 수 있습니다. 따라서 악의적 인 사용자가 인증서를 교체 한 경우 cn과 신뢰 체인을 스푸핑 할 필요가있을뿐만 아니라 개인 키로 암호화하는 데이터의 암호를 해독하고 서버의 서명으로 앱의 올바른 공개 키를 보유해야합니다. 공개 키.

일부 다른 질문 숙고하기 :

  1. 당신은 세션이 재사용되는 것을 말하는거야? 만료되지 않습니까? 그렇지 않은 경우, 만료되도록하고 싶습니다.
  2. 네트워크 보안을 활용할 수 있습니까? VPN 터널 또는 IP ACL을 사용하여 누가 웹 서버에 액세스 할 수 있는지 제한 할 수 있습니까?
  3. 키로거는 어떻게됩니까? 암호는 가로 챌 수 있습니다. 두 번째 인증 요소는 키 카드 나 지문 또는 RSA SecurId와 같이 사용자가 가질 수 있습니다. 그렇게 멀리 가고 싶지 않다면, 사용자는 자신의 계정과 관련하여 인식해야하는 이미지 인 "사이트 인장"을 사용자에게 제시 할 수 있습니다. 어쩌면 여러 이미지를 제시하고 가입 프로세스 중에 선택한 이미지를 선택할 수 있습니다. 또한 사용자를 기계 (CAPTCHA 유형)와 구별 할 수있는 작은 퍼즐을 해결할 수 있습니다.

이러한 모든 포인트는 클라이언트 측에 저장된 정보를 최소화합니다. 단지 cert 또는 2와 그 cert와 함께가는 키입니다.

보안에 대한 주제는 방대하며 다양한 구현 세부 사항에 대한 전체 토론을 시작할 수 있습니다. 위는 생각할 포인트입니다.

모든 것에 비용이 부과됩니다. 보안은 유용성 및 CPU주기를 소비합니다. 적절한 균형이 중요하지만 당연히 여러분에게 달려 있습니다. Fort Knox를 만들기 전에 누군가가 거기에 살고 싶어하는지 확인하십시오 :)

+0

+1 처음에 답장을 보내 주셔서 감사합니다. – Guapo

+1

** 페이로드 인수 ** 생각할 것이 많지만 사람들이 응용 프로그램을 디 컴파일하고 브라우저에서 직접 사용할 수있는 연결 URL을 얻는 것을 포함하는 간단한 것을 잊어 버렸습니다. 위에서 언급 한 것처럼 요청을 보내기 위해 따라야하는 개인화 된 것들을 언급했습니다. POST 방법이어야하고, 사용자 에이전트 개인화 된 이름을 가져야하고, SSL 등에서 온 것이어야합니다. 실제로 URL과 요청 정보를받을 수있는 사람들을 완전히 보호하지는 못합니다. 해결책은 있습니까? 그거? – Guapo

+0

질문 : 1. 사용하지 않을 경우 X 분마다 '만료되지 않습니까?'라고 대답하십시오. 2. '네트워크 보안을 활용할 수 있습니까?'신청서는 전 세계적으로 제공 될 예정이므로 그렇게 생각하지는 않습니다. 삼.내가 그렇게까지 갈 필요가 있다고 생각하지는 마라. 그러나 나는 틀림없이 로그인 시도를 위해 captcha와 같은 것을 확실히 가질 것이다. Hehehe 네, 포트 녹스를 지을 계획은 없지만 자신을 막고 싶습니다. – Guapo

관련 문제