2012-03-01 3 views
-1

SQL 데이터베이스에서 사용한 사용자 이름과 암호를 등록하지 않고 간단한 로그인 페이지를 만들고 싶습니다. 이것은 button1에 대해 지금 작성한 것입니다.간단한 로그인 페이지를 만드는 방법은 무엇입니까?

string connection_string = "Path to database"; 
SqlConnection connect = new SqlConnection(); 
connect.ConnectionString = connection_string; 
connect.Open(); 
string sql = "Select * FROM Register where [email protected] and [email protected]"; 
SqlCommand 1 = new SqlCommand("username",textbox1User.text); 
SqlCommand 2 = new SqlCommand("password",textbox2pass.text); 

그게 내가 지금 가지고있는 것입니다. 로그인 페이지의 나머지 부분을 수행해야하며 값이 정상이면 페이지에 리디렉션됩니다. 그러나 나는 또한 파일을 보낼 URL을 입력하여 다른 사용자가 액세스 할 수 없도록 페이지를 보호 할 수있는 방법을 알아야합니다. 그래서 나는 단지 로그인해야합니다.

+0

암호를 일반 텍스트로 저장하지 마십시오. – SLaks

+3

ASP.Net의 기본 제공 멤버쉽 및 양식 인증 시스템을 사용해야합니다. 특히 보안면에서 휠을 다시 발명하지 마십시오. – SLaks

+0

C#에서 새로운 기능이 있습니까? 또는 개발자로서? –

답변

6

먼저 SQL에 대한 매개 변수를 사용하고 싶다고 축하해주십시오. 많은 초보자가이 작업을 수행하지 않아 끔찍한 SQL 주입 공격을 유발합니다.

두 번째로 비밀번호를 해싱해야합니다. 일반 텍스트 암호를 절대 저장하지 마십시오. 패스워드 해쉬가 얼마나 까다 롭고 논쟁의 여지가 많기 때문에 코드를 복잡하게 만들 것이므로 지금 당장은 이것을 따로 설정할 것입니다.

이제 실제 질문으로 이동하십시오. 첫째, 코드에 몇 가지 실수가 있습니다. 먼저이의 라인을 따라 더해야한다 무엇을, 매개 변수가 잘못 만들어지는 것입니다 :

using(SqlConnection conn = new SqlConnection("connection string")) 
{ 
    SqlCommand cmd = new SqlCommand("Select * FROM Register where [email protected] and [email protected]", conn); 
    cmd.Parameters.AddWithValue("@username", textbox1User.Text); 
    cmd.Parameters.AddWithValue("@password", textbox2User.Text); 
} 

그와

을 (. 사용에 대한 자세한위한 http://msdn.microsoft.com/en-us/library/yh598w02.aspx를 참조 그것은으로 얻을 수있는 좋은 습관이다) 쉽게 로그인을 검증하기 위해, 수행, 당신은 당신의 SqlCommand를 위해이 같은 작업을 수행 할 수 있습니다

0 :

SELECT COUNT(*) FROM Register WHERE [email protected] AND [email protected] 

을 그리고 매개 변수를 추가 한 후, 코드에이를 추가,하지만 using에 닫는 중괄호 전에 한 사용자가 발견, 또는 정확히 하나의 사용자가 발견 된 경우 1 (동일한 사용자 이름으로 여러 사용자를 가질 수 있다면,이 범위 이외의 다른 문제가있는) 경우

conn.Open();  
int result = Convert.ToInt32(cmd.ExecuteScalar()); 

은 0입니다.

이제 액세스 제어 적용에 관해서는 http://support.microsoft.com/kb/301240을 살펴보십시오. 관심있는 용어는 "폼 인증"및 "web.config 인증"입니다. 제공된 링크의 코드 샘플은 약간 구식이지만, 일반적으로 사용자가 원하는 것을 성취하는 방법을 보여줍니다.

올바른 트랙을 시작해야합니다.

-1

또한 HTACCESS를 사용하여 내용을 제어하고 암호로 보호 할 수 있습니다. 이것은 SQL과 암호 저장에 대해 걱정할 필요가 없으므로 가장 간단한 방법입니다.

+2

질문은 ASP.Net에 관한 것이므로 초보자 용 질문이므로 아파치에서 Mono를 실행하고 있는지 의심 스럽습니다.이 부분은 .htaccess가 유용 할 것입니다. –

+0

예. 그렇지만 사용자가 등록 할 필요가 없다고 말하면 htaccess가 가장 좋습니다. Didnt '는 ASP.NET에서 작동하지 않는다는 것을 알고 있습니다. –

관련 문제