2013-07-19 6 views
0

가 나는 ASPwebsite을 만드는 오전, 나는이 방법처럼 내 세션을 저장 :저장 세션

public List<User> getUser(string username, string password) 
{ 
    SELECT * FROM User WHERE Username = @username AND Password = @password 
} 

List<User> userList = Database.getUser(txtUsername.Text, txtPassword.Text) 

foreach(User u in userList) 
{ 
    Session["Username"] = u.Username; 
} 

이 세션을 저장하는 좋은 방법이 있나요? 쿠키로 쿠키를 해킹 할 수 있습니까?

아니면 다른 사람들이 나보다 더 좋아하니?

감사합니다.

+0

당신은 일반 텍스트로 암호를 저장하고 있습니까? – Matthew

+0

음, 네. 예를 들어 사용자가 로그인하고 그의 사용자 이름이 마이크 인 경우 그의 세션은 마이크가됩니다. – Swag

+0

@xVizzi : 암호가 아니라 사용자 이름입니다. 그러나 암호는 암호를 일반 텍스트로 저장하고 있음을 나타냅니다. 이 질문과 관련이 없지만 암호는 결코 일반 텍스트로 저장해서는 안됩니다. 엄청난 보안 위험이 따르며 사용자에게 무책임한 행동입니다. 암호는 저장되기 전에 해시되어야합니다. 그리고 나서 사용자가 암호를 입력 할 때 입력은 해쉬되어야하고 데이터베이스의 해시와 비교되어야합니다. 이 경우 – David

답변

0

간단한 옵션은 Cookies.Secure 속성을 true로 설정하여 쿠키를 웹 사이트의 Https 부분에만 제한하는 것입니다. 체크 MSDN.

이 속성이 true 일 때 쿠키는 https : // 요청으로 만 전송 될 수 있습니다.

그러나

은 여전히 ​​할 수있는 많은있다 및 몇 가지 포인트가 도움이 될 수 아래 당신은 더 넓은 사진을 얻을 : 도청 말보다 훨씬 어렵 통해 세션 토큰을 훔치는

  • 을 크로스 사이트 스크립팅 (A가 가정 취약점). 네트워크 (예 : 사용자의 LAN 또는 ISP)에 액세스해야합니다. 따라서 위험 기반 우선 순위 결정에 따르면 개발자는 XSS 문제를 먼저 다루어야합니다. 왜냐하면 훨씬 더 큰 공격 표면을 제공하기 때문입니다 (공격 확률이 훨씬 높습니다).

  • 해킹당한 세션의 비즈니스 영향이 큰 경우 (예 : 나중에 웹 상점에서 사용할 수 있도록 신용 카드를 저장하는 경우), 전체 사이트를 HTTPS로 제한 한 다음 앞에서 설명한 것처럼 쿠키를 안전하게하는 것이 좋습니다.

일부 유용한 자원