2017-02-14 1 views
-6
SqlQuery = "INSERT INTO GradeTable(Grade,UserID,RegDate)Values('" & TxtGrade.Text.Trim & "','" & UserID & "','" & DTBReg.Value & "'Where GradeTable.StudentID ='" & StudentID & "' and GradeTable.CourseID= '" & CourseID & "') " 
+4

당신은, 읽어 이해하고 매개 변수 사용을 시작합니다 바비 테이블이 방문하기 전에 쿼리. http://bobby-tables.com/ 이것은 SQL 주입 취약점에 대한 교과서 예제입니다. –

+3

이것은 질문이 아닙니다. 이것은 코드입니다. – HoneyBadger

+7

왜 insert 문에서 where 절을 사용하고 있습니까? – NicoRiff

답변

2

당신이하려는 것은 보이는 것처럼 보이며, 작성하는 동안 INSERT가 아니라 UPDATE 문일 것입니다. 이것은 훨씬 더 적절한 쿼리 인 것 같습니다 :

필자는 텍스트 상자의 값이 아닌 매개 변수를 사용합니다. 이것은 SQL 인젝션 (SQL Injection)이라는 가장 일반적인 데이터베이스 보안 결함 중 하나에 취약하기 때문입니다.

쿼리에 대한 텍스트를 사용하여, 다음은 쿼리에이 방법으로 당신의 가치를 추가 할 수 있습니다

cmd.Parameters.AddWithValue("@grade", TxtGrade.Text.Trim); 
cmd.Parameters.AddWithValue("@UserID", UserID); 
//AND SO ON WITH OTHER PARAMETERS 

Assumming cmd를이 당신의 SqlCommand

+2

이와 같은 임의의 쿼리에서 AddWithValue를 사용할 때는주의하십시오. 때로는 데이터 유형이 잘못되어 문제가 발생할 수 있습니다. 명시 적으로 데이터 유형을 정의하는 것이 가장 좋습니다. http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ 아직도 나와 +1! –

+0

@SeanLange 당신 말이 맞습니다. OP 테이블 데이터 유형을 모르기 때문에 AddWithValue를 사용했습니다. 좋은 관찰. – NicoRiff

관련 문제