2011-12-22 2 views
1

일부 사이트 (예 : https://www.owasp.org/index.php/Main_Page)를 살펴본 후 다음 프로세스를 통해 나를 열 수있는 위험에 대해 명시 적으로 언급하지 않았습니다.Sanitize? HTML로 출력되지 않고 SQL 쿼리로 넘어 가지 않을 때

사용자가 객관식 질문에 대답합니다. "대답"이 숨겨진 필드로 양식 보내기

.php 페이지는 100 자 미만으로 유효성을 검사 한 다음 데이터베이스에서 정답을 가져옵니다. 그것은 두 가지를 비교합니다 (== 비교 연산자 사용).

후 기본적으로

echo "Wrong! The correct answer is ".$correctAnswer; //a hack presumably will always be wrong!!! 

를 전송, 어떤 손상이 가능 (최대 100 자) UserInput 사용자시키는 함께있을 수

$playersAnswer = $_POST['checkAnswer']; 

if ($correctAnswer == $playersAnswer){ ....etc 

장점에 박히 나를 위해 내가 사용자의 답변에 어떤 문자/기호/문자에 대해 걱정할 필요가 없다는 것입니다. d 또는 변환. 따라서 나는 완전한 구두점, 외국어, 심지어는 자바 스크립트 wwithout에 대한 질문과 함께 질문을 사용할 수 있습니다 공포!

+1

그래서 질문은 정확히 무엇인가 ..... - 당신이 변수를 사용

위험은 시작? –

+0

"다음 프로세스가 어떤 위험을 초래합니까?"및 "기본적으로 어떤 손상이있을 수 있습니까 ..." – Gamemorize

+0

투표 불량. [피해야 할 질문에 대한 FAQ] (http://stackoverflow.com/faq#dontask) - 실제 해결할 문제는 없습니다. "다른 사람들이 내가하는 것처럼 느끼면 궁금합니다. ". 이 말은 당신이 이미 당신의 질문에 대답 한 것처럼 보입니다. –

답변

3

당신이 모든 비교에서 POST 변수를 사용하는 경우이에 위험이없는

$correctAnswer == $playersAnswer 

. HTML 출력에, 데이터베이스 쿼리에서, exec() 또는 eval() 명령에

+0

좋아, 그건 내가 생각하고 있었던 것이다. 해명 해줘서 고마워. – Gamemorize

+0

...하지만 html 출력에서'$ correctAnswer'를 사용하고 있으므로 (예 : 변수로 해석되는 html 코드를 허용 할 것인지 여부에 따라) 위생 및/또는 인코딩해야합니다. – VolkerK

+0

@VollerK 웹 사이트를 통하지 않고 수동으로 입력하기 전에 데이터베이스의 모든 질문을 입력/확인하고 데이터베이스 자체를 해킹하여 $ correctAnswer로 처리해야합니다. 하지만 네가 맞습니다. – Gamemorize

관련 문제