2013-02-15 2 views
-1

나는 라디오 버튼만을 포함하는 폼에 대해 최근에 question을 물었다. 숙련 된 사용자가 대답했고 또한 SQL 주입에 대해 열려 있다고 말했다. 누군가 설명해 주시겠습니까? - 텍스트 사용자 입력이 없습니다.라디오 버튼이있는 mysql 삽입과 폼

+0

시도해 보셨습니까? –

+0

* Superglobals로 끝나는 모든 입력은 위생 처리되어야합니다. 어떤. 라디오 버튼은 예외가 아닙니다. 그들의 가치는 당신의 대본에 보내지고 쉽게 변조 될 수 있습니다. – Gordon

+0

어림짐작은 결코 당신의 서버에 도착하는 어떤 자료든지 신뢰하지 않는다. 귀하가 달리 증명할 때까지 데이터가 유해하다고 항상 간주합니다. 도착한 값이 예상 한 값이라고 결코 가정하지 마십시오. – GarethL

답변

1

모든 사용자는 Firefox의 Firebug 또는 Chrome에 포함 된 것과 같은 DOM 탐색기를 사용하여 해당 필드를 편집 할 수 있습니다. (요소 요소 검사)

사용자 입력은 없지만 사용자는 여전히 DOM 구조를 편집하여 포함 할 수 있습니다.

그러나 편집하는 것뿐만 아니라. 사이트가 안전하지 않은 경우 Cross-Site Scripting Attacks (XSS), 누구나 자신의 컴퓨터 또는 호스트에 양식을 직접 입력하여 POST 님이 사이트로 보냈습니다.

보안 및 PHP에 대한 자세한 내용은 this site에서 확인할 수 있습니다.

입력을 필터링하는 것 외에 SQL 주입을 피하는 가장 좋은 방법은 PDO 또는 준비된 명령문을 사용하여 DB에 보안 호출을 사용하는 것입니다. 예를 들어

: 사용자가 쉽게 HTML을 편집하거나 제출되는 내용 변경할 수 있습니다

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 


// insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 
2

. 라디오 버튼이기 때문에 값을 변경할 수 없다는 의미는 아닙니다. 그들은 주사를 일으킬 수있는 가치를 포함하여 무엇이든 그들을 설정할 수 있습니다.

일반적인 브라우저 도구를 사용하면 사용자가 HTTP 요청을 수정할 수 있으므로 누군가 다른 사람이 라디오 버튼 값을 쉽게 변경할 수 있습니다.

+0

알았어. 고맙습니다. 이 물건은 정말 위험합니다. – MFA

0

악의적 인 사용자가 자신의 서버에 자신의 POST 요청을 작성하기 위해 양식이 필요하지 않습니다. 그들은 단지 서버가 받아들이는 양식 키를 알아야만합니다. 그리고 나서 그들은 자신의 요청을 만들 수 있습니다.

도망 치지 않은 $_POST/$_GET/$_REQUEST/$_COOKIE/(some $_SERVER) 값을 쿼리에 직접 삽입하면 결과가 나타납니다.

매개 변수화 된 쿼리를 PDO 또는 mysqli와 함께 사용하십시오.

이 게시물을 읽어 보시기 바랍니다 : How can I prevent SQL injection in PHP?

1

양식은 사람들이 당신의 HTTP 엔드 포인트에 데이터를 제출하는 의미 제공하지만, 사람들은 데이터를 전송하는 데 사용할 필요가 없습니다. 예를 들어, 그들은 자신의 양식을 만들거나 손으로 HTTP 요청을 구성 할 수 있습니다.

클라이언트에 보낼 내용이 없으면 사람들이 원하는 것을 제출하지 못하게 할 수 있습니다.

엔드 포인트는 입력에 대해 입력에 대해 보안되어야합니다. 사용자가 입력을 제어 할 수 없기 때문입니다.

관련 문제