2012-09-25 2 views
0

텍스트 영역 (id = Message)을 읽고 데이터베이스에 저장하려고합니다. 문제는 사용자가 텍스트에 작은 따옴표 (')를 입력하면 아래 두 코드가 모두이를 처리하지 못한다는 것입니다.classic asp는 작은 따옴표로 입력을 요청합니다.

Request("Message") 

또는

Replace(Request("Message"),"'","") 

모두 오류 메시지가

Security violation occurred 
Incorrect value was passed for field "Message" 

실패. 이 Request("Message")

+0

왜 표준 교체 (Request ("Message"), " '", "' '")가 필요하지 않습니까? 매개 변수를 사용하지 않습니까? – Fionnuala

+0

ASP 또는 Active 스크립팅 환경의 오류 메시지가 "잘못된 값이 필드에 전달되었습니다."라는 것을 알지 못합니다. IIS의 ASP 또는 Chilisoft ASP와 같은 타사 구현을 사용하고 있습니까? – Dai

답변

0

SQL 삽입을 방지하기 위해 호스팅 수준의 보안 조치라고 생각됩니다. 이 경우 유일한 해결 방법은 양식을 제출할 때 아포스트로피를 바꾸거나 HTML 코드를 인코딩하기 위해 일부 JavaScript를 추가하거나 호스트를 사용하지 않도록 설정하는 것입니다.

로컬 컴퓨터에서 테스트 하시겠습니까? 아니면 웹 호스팅 회사에서 호스팅되는 사이트에서 테스트 하시겠습니까?

0

안전하게 데이터베이스에 userentered 데이터를 저장하는 명령 개체를 사용합니다를 읽고로 즉시 실패처럼

보인다.

set cmd = Server.CreateObject("ADODB.Command") 
set cmd.ActiveConnection = conn 
cmd.CommandText = "INSERT INTO table(message) VALUES(?)" 
cmd.CommandType = 1 
recordsAffected = 0 
call cmd.Execute(recordsAffected, array(Request("Message")&"")) 

if recordsAffected <> 1 then 
    Response.Write "Something went wrong!" 
else 
    Response.Write "Data saved!" 
end if 

위의 코드는 당신이 변수 CONN에 저장되어있는 데이터베이스에 열려있는 연결을 가정합니다.

관련 문제