PHP 코드에서 사용하기 위해서입니다. 내 쿼리 나 다른 것에 그것을 전달하지 않을 것입니다.PHP : _GET 데이터를 사용할 때 필요한 위생 처리가 있습니까?
1
A
답변
7
- , 당신은 SQL 주입
- 를 얻을, 당신은 임의의 파일 읽기 취약점
- 을 얻을에 그대로 사용하면 출력 할 경우, 사용자가 HTML 페이지의 일부로 XSS 취약점이 나타나면
- 파일을 출력하면 미리 정의 된 서식이있는 경우 형식이 잘못된 파일을 가져올 수 있습니다.
- 값을 세트와 비교한다면 미리 정의 된 값을 사용하면 괜찮습니다.
- 당신이 숫자로 변환하는 경우, 당신만큼 당신
0
$_GET
매개 변수에 아무 것도 얻을 수 있다는 점을 염두에두고 응용 프로그램과 보안에 필요한 것이 무엇이든 필요합니다. 예를 들어, 쿼리에서 값을 사용하지 않을 수도 있지만, 예를 들어 페이지에서 값을 맹목적으로 사용하면 크로스 사이트 스크립팅 공격을받을 수 있습니다. "무해한"웹 사이트는 쉽게 크로스 사이트 스크립팅 공격에 빠질 수 있습니다.
사용자 입력을 신뢰하지 않으시겠습니까? 당신은 SQL 쿼리에 전달할 경우 파일 이름을 형성하는 데 사용할 경우
0
당신은 그 내용과 그 용도에 따라 변수를 소독 할 필요가에 대한 임의의 숫자 작품으로 괜찮아요.
그래서 당신은 변수과 같이있는 경우 :
$_GET['page_id']
그리고 당신의 다음, 데이터베이스 내에서 위생적으로 사용. 당신이 변수과 같이있는 경우
:
$_GET['action']
그리고
require_once "pages/" . $_GET['action'] . ".php"
다음과 같은 사용에 대한 당신의 계획 당신이 전에 소독 그것, 오 그냥 register_globals
이 꺼져 있고 상당한 생각이없는 곳에서 사용하지 않는 것이 좋습니다.
2
이것은 실제로 코드를 단계별로 실행하여 실제로 대답 할 수 있습니다. 위생이 필요할 수있는 코드에 함정이있을 수 있습니다 (잘못 작성된 switch
문과 같이).데이터베이스 쿼리 이외의
, 일반적인 시나리오는 들어오는 데이터를 살균 할 필요이 (가) 있습니다 :
- 통과를 사용하여 파일
- 을 포함하도록 사용하여 파일 이름
- 에 사용
exec()
- 을 통해 실행되는 프로그램에 매개 변수
0
서버에서 가져 오지 않는 모든 것을 소독해야합니다! 여기에는 $_GET, $_POST, $_SERVER
이 포함됩니다.
"일반 용도"를 정의 하시겠습니까? 몇 가지 예를 보여줄 수 있습니까? –
Sanitization은 마음을 편하게하고 처리 논리에서 예기치 않은 엣지 케이스를 완화 할 수 있습니다. 그러나 적절한 장소에서 탈출하는 것만으로도 안전이 보장됩니다. 또한 모든 변수에는 특정 [필터링] (http://sourceforge.net/p/php7framework/wiki/input/)이 필요하지만 모든 것을 위생 할 수는 없습니다. – mario
글쎄, 내가 생각하기에 위험에 가장 가까운 것은 파일이 디렉토리 목록에 주어진 이름으로 존재하는지 확인하는 것이다. – Hamster