공격 방식 학습 의 SQL 주입(SQL Injection)1/3 페이지

이것 은 호 의 를 갖 지 않 은 학생 들 에 게 틈 탈 수 있 는 기 회 를 주 고 특이 한 조회 문자열 을 입력 하여 특정한 SQL 문 구 를 연결 하면 주입 의 목적 을 달성 할 수 있다.데이터베이스 의 중요 한 정 보 를 얻 을 수 있 을 뿐만 아니 라 권한 이 설정 되 어 있 지 않 으 면 표 전 체 를 삭제 할 수도 있다.따라서 SQL 주입 구멍 은 상당히 심각 하 다.예전 에 우연히 배 운 사 이 트 를 발 견 했 을 때 도 SQL 문 구 를 맞 춰 밥 을 먹 었 습 니 다.예 를 들 어 SQL 주입 방법 을 더욱 잘 배우 고 이해 하기 위해 예제 웹 페이지 를 만 들 었 습 니 다.화면 은 다음 과 같 습 니 다 로그 인 코드 를 누 르 면 다음 과 같 습 니 다.다섯 번 째 줄 에 주의 하 십시오.우 리 는 맞 춤 형 SQL 문 구 를 사 용 했 습 니 다

private void Login()
{
string uname = tbName.Text;
string pwd = tbPassword.Text;
string sqlCmd = "select * from [Users] where UserName = '" + uname + "'";
string sqlCmdRep = sqlCmd.Replace("Users", "XXX").Replace("UserName", "XXX");
lbSQL.Text = sqlCmdRep;
try
{
DataTable dt = DataSQLServer.GetDataTable(sqlCmd);
gvResult.DataSource = dt;
gvResult.DataBind();
if (dt.Rows.Count == 1 && pwd == dt.Rows[0]["Password"].ToString())
{
lbRes.Text = dt.Rows[0]["UserName"] + " Login Success!";
}
else if(dt.Rows.Count == 0)
{
lbRes.Text = uname + " not exist!";
}
else
{
lbRes.Text = "Login Fail!";
}
}
catch (Exception ex)
{
lbRes.Text = "Error: " + ex.Message;
}
}

1 2 3 다음 페이지 전문 을 읽다

좋은 웹페이지 즐겨찾기