고려해야 할 사항이 두 가지 있습니다. 사용자가 양식을 수정할 수 있으며 XSS (Cross Site Scripting)로부터 보호해야합니다. 사용자가 자신의 입력으로 HTML 들어가면
XSS
XSS이다. 예를 들어 사용자가이 값을 제출하면 어떻게됩니까?:
" /><script type="text/javascript" src="http://example.com/malice.js"></script><input value="
이
은과 같이 양식에 기록 될 것입니다 :이 방지하기 위해
<input type="hidden" name="prova[]" value="" /><script type="text/javascript" src="http://example.com/malice.js"></script><input value=""/>
가장 좋은 방법은 입력을 확보하기 위해 htmlspecialchars()
을 사용하는 것입니다. 이 문자는 <
과 같은 문자를 <
으로 인코딩합니다. 예를 들어 :
<input type="hidden" name="prova[]" value="<?php echo htmlspecialchars($array); ?>"/>
당신이있어 XSS에 대해 자세히 읽을 수 있습니다 : 나는 귀하의 사이트에 있다면 https://www.owasp.org/index.php/XSS
양식 수정
을, 나는 HTML을 수정하는 크롬의 개발자 도구 나 방화범을 사용할 수 있습니다 귀하의 페이지의 양식에 따라 악의적으로 사용될 수 있습니다.
예를 들어 추가 값을 배열에 추가하거나 배열에 속하지 않은 값을 추가 할 수 있습니다. 이 파일 시스템 관리자라면 존재하지 않는 파일이나 중요한 정보가 포함 된 파일을 추가 할 수 있습니다 (예 : myfile.jpg
을 ../index.php
또는 ../db-connect.php
으로 바꿉니다).
간단히 말해 입력 내용을 이해하고 양식에 안전한 입력 만 사용해야합니다. 숫자가 존재하는지 확인하고 데이터베이스에서 파일 이름을 추출 할 수 있으므로 파일 ID (숫자)는 안전합니다 (데이터베이스에 유효성이 검증 된 입력이 있다고 가정 함). 파일 은 위에서 설명한 이유로 안전하지 않습니다. 파일 이름의 유효성을 재확인해야합니다. 그렇지 않으면 아무 것도 변경할 수 없습니다.
클라이언트와 서버간에 구조화 된 데이터를 많이 보내고 있다면 JSON으로 직렬화하지 않으시겠습니까? –
POST를 통해 배열을 전달하는 것에 대해 본질적으로 불안전하다고 생각되는 부분은 무엇입니까? 그것은 단지 데이터 일뿐입니다. –
나는 보통'json_encode()'를 좋아한다. 그런 다음 'json_decode()'옵션을 true로 설정하면 다시 되돌릴 수 있습니다. – phpisuber01