2011-02-03 4 views
2

$ _POST 변수를 사용하여 데이터베이스에 저장하는 스크립트가 있습니다.POST 메서드에서 해킹을 방지하는 방법

자신의 게시 양식 방법을 사용하거나 컬을 사용하여 게시물 변수 및 값을 서버에 보내서 시스템을 속이려는 사용자가 있습니다.

이 공격을 어떻게 막을 수 있습니까?

임의의 HTTP 요청을하는 사람들을 막을 방법이 없습니다 당신

답변

4

예방은 불가능합니다 (POST가 안전하다는 것은 지나치게 단순화 된 신화입니다). 당신은 다양한 방법으로 들어오는 데이터의 유효성을 검사 할 수 있습니다

  • CSRF는
  • 가 (주장, 예상되는 양식 값을 enumarate (handicrafted 조작에 있지만) 임의 양식 제출 봇에 도움을 토큰) 모두가 있는지없고 외부 필드가 표시됩니다.
  • 예상 값에 대한 위생 및 필터. 나는 당신이 POST 보호의 capcha 종류를 통해 양식에서 만든되어 있는지 확인하거나 각 $ _POST 변수를 소독하고 기준을 만족하지 않는 경우 전체 POST 데이터를 거부 할 수 있습니다 예를
+0

+1. 또한 양식 처리에 대한 리소스도 있습니다. http://phpsec.org/projects/guide/2.html – singles

+0

@ssingles : 훌륭한 링크와 권위있는 대답입니다. – mario

0

감사드립니다.

방어 방법은 요청의 내용과 공격의 원인에 따라 다릅니다.

-1

이 공격의 이름은 "SQL injection"입니다. 그것으로부터 보호하기 란 그리 어렵지 않습니다. 값이 문자열 인 경우 magic_quotes를 사용하고 값이 number 인 경우 filter witch는 onlu 숫자를 건너 뜁니다.

+1

Magic Quotes는 SQL 주입을 방어하기에 충분하지 않습니다. 이 질문은 공격이 SQL 주입이라고 결론을 내리기에 충분한 정보를 제공하지 못합니다. XSS, "내 점수에 대해 거짓말", "내 포럼에 스팸 메일 채우기"또는 다른 것일 수 있습니다. – Quentin

0

에 대한 $_POST->text->in_array("field", "abc,def,xyz")를 사용합니다.

관련 문제