PHP에서 레코드를 업데이트할 때 작업 수행(일반적으로 POST 또는 PUT과 같은 양식 및 HTTP 메서드를 통해)과 하이퍼링크 (일반적으로 GET 메소드를 사용함)은 보안 및 최고로 요약됩니다. 실천. 작업 수행이 선호되는 이유는 다음과 같습니다.
보안
- GET(하이퍼링크): 링크에 의해 트리거되는 작업은 일반적으로 정보 수정이 아닌 검색용으로 설계된 GET HTTP 메서드를 사용합니다. 업데이트 또는 삭제에 사용될 경우 민감한 데이터(예: 레코드 ID)가 URL에 노출되어 URL 조작 또는 CSRF(Cross-Site Request Forgery)와 같은 공격에 취약해질 수 있습니다.
문제가 있는 예:
<a href="update.php?id=123">Update</a>
로그인 후 복사
누구나 URL의 ID를 조작하여 승인되지 않은 기록을 변조할 수 있습니다.
- POST(작업 수행): 업데이트는 URL이 아닌 요청 본문으로 데이터가 전송되는 POST 메서드가 포함된 양식을 사용해야 합니다. 이 접근 방식은 특히 CSRF 토큰과 같은 추가 보안 조치와 결합할 때 민감한 정보를 숨기고 무단 조작을 더욱 어렵게 만듭니다.
추천 예시:
<form action="update.php" method="POST">
<input type="hidden" name="id" value="123">
<button type="submit">Update</button>
</form>
로그인 후 복사
HTTP 규칙 준수
HTTP 프로토콜에는 각 메소드에 대한 명확한 의도가 있습니다.
- GET: 정보를 검색합니다(멱등성이 있고 부작용이 없음).
- POST/PUT: 정보를 제출하거나 업데이트합니다(비멱등성이고 부작용이 있음).
업데이트나 삭제와 같은 작업에
GET을 사용하는 것은 이러한 규칙을 위반하는 것이며 GET 요청을 안전하고 부작용이 없는 것으로 처리할 수 있는 캐시나 프록시와 같은 중개자를 혼란스럽게 할 수 있습니다.
의도하지 않은 행동 방지
하이퍼링크는 의도치 않게 실행될 수 있습니다(예: 실수로 클릭하거나 링크를 따라가는 봇).-
- POST를 사용하는 양식, 특히 확인 단계를 추가하면 실수로 실행될 가능성이 줄어듭니다.
고급 보안 및 검증과의 호환성
양식을 사용하면 다음과 같은 추가 보안 조치를 원활하게 통합할 수 있습니다.
-
CSRF 토큰: 악의적인 교차 출처 요청을 방지합니다.
-
입력 확인: 양식을 제출하기 전에 레코드 ID를 확인하세요.
-
권한 제어: 양식을 렌더링하기 전에 사용자 액세스 권한을 확인하세요.
기록 업데이트를 위해 작업 수행(POST 또는 PUT이 포함된 양식을 통해)을 사용하는 것이 권장되는 접근 방식입니다. 이를 통해 보안이 강화되고 HTTP 규칙에 부합하며 우발적인 작업의 위험이 줄어듭니다. 하이퍼링크는 시스템 상태를 변경하지 않는 탐색 또는 읽기 전용 작업용으로 예약되어야 합니다.
위 내용은 업데이트에 POST를 사용하는 것이 하이퍼링크보다 안전한 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!