PHP Forms – HTML Injection and Validation (Part 4)

이제 데이터 보안에 대한 고급 주제에 대해 이야기 할 것입니다 HTML 엔티티 및 어떻게 사람들이 나쁜 데이터를 양식 등으로 보내지 못하게할지 모른다

먼저 폼 데이터를 지속시키는 것에 대해 이야기 해 봅시다 이제 지속적인 형태의 데이터는 우리가 일종의 기대하는 것입니다 우리는 그것이 마법 일 것이라고 예상했다 특히 양식이 자동으로 신용 상태를 채우려 할 때 카드를 귀하의 주소로 보내주십시오 그게 내가 말하는게 아니야

나는 기본 폼 필드에 대해 이야기하고 있습니다 그리고 당신이 이걸 실행하고 있다고 가정 해 봅시다 그것은 추측 게임입니다 20을 넣은 다음 제출 버튼을 누릅니다 정상적으로 돌아 왔을 때,이 코드는 3 개의 코드로 다시 비어 있습니다

브라우저가 이전 게시물 데이터를 기억하지 못하기 때문입니다 다시 붙이세요 모든 것은 응용 프로그램에서 수행됩니다 따라서 코드를 작성해야합니다 그래서 만약 당신이 어떤 것을 보거나 20 세가되면, 당신은 20를 누르고, 당신은 Submit를 누르고, 당신은 페이지에 돌아오고 20은 여전히 ​​거기에 있습니다

당신의 추측이 너무 낮습니다 그 부분에서 약간의 노력이 필요했지만, 이전 양식 데이터를 다시 양식 필드로 복원하십시오 그러나 그렇게하기가 어렵지 않습니다 그래서, 우리가 할 일은, 이 코드는 복원 작업을 수행하는 방법이며 작동 방법은 다음과 같습니다 스크립트가 시작되면 oldguess라는 변수를 만들겠습니다

포스트 하위 추측이 설정되어 있는지 묻습니다 그러면 oldguess를 만들겠습니다 오래된 데이터, 이전 데이터 게시 데이터 또는 빈칸을 넣을 것입니다 그래서 늙은 사람이 될 것입니다 해당 데이터가있는 요청은 이전 데이터가 될 것입니다

그렇지 않으면 그냥 비어있을거야 나머지는 모두 같습니다 그것은 단지 형식 일뿐입니다 레이블, 이름 = "추측"입니다 그리고이 값에 따옴표와 같은 값을 더합니다

이것은 HTML입니다 그리고 우리는 PHP와 변수 oldugess를 출력에 바로 삽입하십시오 자, 저는 PHP 축소라는 것을 사용하고 있습니다 그건 기본적으로, 대신 말할 수있는 <> PHP echo ($ oldguess)입니다 그리고 물음표

그럴 것입니다 그리고 제가 그것을 큰 따옴표로 묶어두면, 그 값을 바로 끌어 와서 다시 넣을 수 있습니다 그리고 HTML에서, 그것은 나올 것입니다 우리는이 장치를 너무 자주 사용합니다 물음표가 똑같은데 정확히 같은 두 가지가 같습니다

그래서 이것은 수축이며,이 인용문과이 인용문 사이에 붙어 있습니다 PHB에 가서 오래된 추측 문자열의 가치를 뽑아 내고 거기에 붙여 놓으십시오 20 세 때 옛 손님이 어떻게 나타나는지 보여줍니다 20은 영구적입니다 맞습니까? 이것이 바로이 20이 백업을 보여주는 방식입니다

죄송합니다 이것이 바로이 20이 백업을 보여주는 방법입니다 PHP 자체에 의해 그래서 PHP는 보았고, 오래된 데이터가 있다고 말했고, 저는 그 오래된 데이터를 다시 echo 할 것입니다 그래서 그것은 충분히 단순 해 보입니다

방금 사용한 기술을 제외하면 매우 위험합니다 우리가 우리 페이지에 울리고 있다면 사용자가 입력 한 데이터에는 큰 따옴표, 작은 따옴표, 등등과 같은 HTML에 대한 의미, 기타 등등 그래서 기본적으로이 양식에 들어가면 양식 4가됩니다 큰 따옴표를 입력 한 다음 HTML을 입력합니다 내가 돌아 왔을 때 그것은 미쳐 버릴 것이고, 이것이 나의 HTML을 대신 할 것이고, 텍스트 영역에서 다소 벗어날 수 있습니다 그런 일이 어떻게 일어나는지 살펴 보겠습니다

사용자가 보낸 데이터를 에코하려는 경우에 발생합니다 여기에 인용문이 있습니다 따옴표가 있는데이 데이터가 보낸 정확한 사용자입니다 맞습니까? 그리고 그것은 그것이 그들이 넣은 것입니다 그들은 큰 따옴표, b보다 작게, DIE DIE 등으로 타이핑했다

그래서 여기서 일어나는 일은 이 부분은 변수에서 왔는데, 사용자가 입력 한 부분입니다 그리고이 모든 것들은 템플릿에서 왔습니다 그러나 브라우저가 그것을 볼 때, 어떻게 보는지는 아닙니다 브라우저는이 값의 끝인 것으로 간주합니다 공백 값이 있습니다

단지 이것을 입력 태그로 본 다음 더 많은 HTML로 본다 그리고 멀리 가라 이것은 구문 오류이지만 문제는 아닙니다 그리고 이것은 일이 어떻게 끝나고 당신이 대담하게 끝내는 지에 대한 것입니다 그리고 이것은 텍스트로 바뀌며 거기에서 볼 수 있습니다

내가 조금 더 열심히 일했다면 실제로 숨길 수도있었습니다 이제 사람들이 일반적으로 여기에서하려고하는 것이 아니라, 사람들은 다이 다이를 대담하게 말하고 싶지 않습니다 그들이 원하는 것은 쿠키를 훔치기위한 자바 스크립트에 담겨 있습니다 그런 식으로 그래서 절대 표시하지 않도록 조심해야합니다

사용자가 이스케이프 처리하지 않고 콘텐츠를 입력했습니다 그리고 이것은 아마도 모든 웹 애플리케이션에서 가장 큰 약점 일 것입니다 그것은 오는 데이터를 제대로 벗어나지 못합니다 원래 사용자가 제공 한 응용 프로그램에서 다시 가져옵니다 다행스럽게도 PHP에서 이것을 수행하는 가장 쉬운 방법이 있습니다

그래서 HTML 엔티티라고하는 함수가 있습니다이 함수는 실제로 이전 추측을 인코딩하고 그것은 큰 따옴표가 바뀌는 것과 같은 일을합니다 큰 따옴표는 앰퍼샌드 따옴표 세미콜론으로 바뀝니다 그래서 위험한 이보다 작은 것들을 거기에 넣음으로써 앰퍼샌드 인 HTML 엔터티 버전, 앰퍼샌드 버전 우리는 HTML 강의에서 이야기 했었습니다 그리고 나서 그것은 잘되었습니다

그래서 당신이 똑같은 일을한다면, 당신은 다섯 번째 형태로 똑같은 일을합니다 이것은 값이 큰 따옴표와 큰 따옴표와 같은 방식으로이를 생성합니다 글쎄, 이것은 HTML 엔티티로 인해 인쇄가 끝나는 것입니다 그건 큰 따옴표입니다 그리고 네, 입력 한 내용에 큰 따옴표가있었습니다

그러나 이것은 앰퍼샌드, 따옴표,보다 큼, 보다 작음, 앰퍼샌드,보다 큼, 죽을 때, 죽으면, 작게, 더 큼, 줄이는 경우 b 그래서, 이것은 사용자가 정확히 입력하는 방식으로 돌아옵니다 그게 다시 올거야 이제는 그런 일이 일어나지 않았습니다 그것은 슬픈 일입니다

왜냐하면 저는 이것들에서 HTML을 사용하지 않았기 때문에, 내 pre 태그에서 내 DebugPrint에서 내 데이터를 버리고 있었다 나는 여전히 DebugPrint에 보안 구멍이있다 실제로는 뭔가가있다

걱정해야합니다 디버그에도 있습니다 인쇄하십시오 하지만 기본적으로 htmlentities를 호출하면이 버전의 문자열을 얻을 수 있습니다 기본적으로 위험한 문자를 해당 문자의 엔티티 버전에 매핑합니다

그래서 큰 따옴표 나 작은 따옴표 나 큰 따옴표를 볼 수 없습니다 그리고 html 엔티티는 PHP에 내장되어 있습니다 이것을 함수로 부릅니다 그리고 우리는이 일을 계속해서 반복해서 볼 것입니다 다시 지금부터 나머지 반원들에게

보다 작습니까? = htmlentities, 변수 이름, 이야기 끝, 완료 좋습니다 이제는 HTML 삽입이라고합니다 HTML을 주입, 그리고 구글과 그, 어떻게 PHP에서 HTML 삽입을 피하기 위해? 그리고 그들은 엔티티를 말할 것입니다 그래서 그것은 어떻게 분류하지 않는 문제 중 하나입니다

사용자의 원시 데이터를 에코하여 프로그램에 보안 취약점을 설치합니다 이제 데이터를 처리하기 전에, 당신은 실제로 그것에 대해 살펴보고 싶습니다 그것을 허용하기 전에 몇 가지 정신 테스트를 통과하는지 확인하십시오 이와 같은 것들은이 특정 게시물 값이 비어 있지 않은지 확인합니다 0이 아닌 문자열 길이 또는 모든 단어가 친구라는 단어가 아니거나 전자 메일 주소라는 의미입니다

푯말이 있는지 확인해 봅시다 따라서 게시물을 처리하고 처리하기 전에 이러한 유형의 패턴이 있습니다 우리가하고 싶은 데이터를 데이터베이스에 저장하고 싶습니다 그것을 이해하기 위해 몇 가지 기본적인 온 전성 검사를 수행하기위한 데이터 검증 그래서 이것은 추측 게임의 일부분입니다

당신이 쓰는 추측 게임은이 모든 온 전성 검사를 할 것입니다 즉, 숫자를 주면 실제로 추측을 검사합니다 하지만 괜찮은지 확인하기 위해 검사를하고 싶습니다 그래서 우리는 약간의 온전함을 확인하고, 우리는 포스트 데이터를 다루지 않으며, 여기서 데이터를 얻습니다 하지만 너 여기에 와야 해

그리고 우리는 몇 가지 검사를 할 것입니다 첫째로, 우리는 세트를 할 것입니다 거기에 없다면 우리는 추측 매개 변수가 누락되었다고 말할 것입니다 그래서 당신은이 순서를 쓰는 경향이 있습니다 그 최악의 문제를 잡아라

따라서 매개 변수를 가져 가지도 않은 경우 무엇을 확인해야할까요? 그 길이 맞지? 그러니까, [소리] 그럼 나는 일련의 다른 if를 사용하면 되겠습니까? 그래서 설정되지 않았다면 이것을 인쇄하십시오 설정되어 있고 너무 짧으면 짧은 메시지를 출력하고, 그렇지 않으면, 그것은 숫자가 아닙니다 그런 다음 추측이 숫자가 아니며 이 시점에서 우리는 좋은 데이터를 얻었습니다 여기에서 우리는 좋은 데이터를 얻었습니다 추측이 덜한 경우 42보다 크면 추측치가 42보다 크면 너무 높고 네가 공기 검사의이 결투를 통해 모든 것을 만들면 당신 말이 맞는 말이 맞아요

그 일을하기 전에는 기본입니다 당신은 위생 검사를하는 작업을 수행하고 데이터가 안전하다고 말할 수 있습니다 이제 재미있는 것은 PHP 일종의 것입니다 숫자 부분을하는 것보다 작습니다 이것은 단지 추측입니다

추측은 문자열이고 42는 숫자입니다 PHP는이를 자동으로 숫자로 변환합니다 그리고 그것은 이점입니다 그것보다 적 으면 변환 할 필요가 없습니다 비교로 변환하면 아주 잘 작동합니다

PHP에서는 오히려 간결하지만, 여러분은 기억해야합니다 나는 그렇게하기로 마음 먹었다 그렇지 않다면 조심해야한다 당신이 그렇게하지 않는다는 것을 의미합니다 그래서 우리가 다음에 이야기 할 것은 몇 가지 규칙입니다

이 게시물 데이터를 처리하고 전체 스크립트를 구조화하는 방법 모델보기 컨트롤러는 매번 동일한 패턴으로 데이터를 처리합니다 [음악]