Programming

원래 목적

procodes 2020. 8. 20. 20:34
반응형

원래 목적 ? [닫은]


<input type="hidden">태그 의 원래 목적이 궁금합니다 .

요즘에는 서버로 전송되는 변수를 저장하기 위해 JavaScript와 함께 자주 사용됩니다.

그렇다면 자바 스크립트 이전<input type="hidden">존재했던 것인데 원래 목적은 무엇 이었을까요? 나는 일종의 상태를 유지하기 위해 다시 (변경되지 않은) 값을 서버에서 클라이언트로 보내는 것을 상상할 수 있습니다. 아니면 그 역사에서 뭔가 잘못되어 항상 JavaScript와 함께 사용해야 했습니까?<input type="hidden">

가능하면 답변에 참고 문헌을 제공하십시오.


나는 일종의 상태를 유지하기 위해 다시 (변경되지 않은) 값을 서버에서 클라이언트로 보내는 것을 상상할 수 있습니다.

정확합니다. 사실, 오늘날 우리가 알고있는 HTTP는 적어도 근본적으로 상태 비 저장 프로토콜이기 때문에 오늘날에도 여전히이 목적으로 사용되고 있습니다.

이 사용 사례는 실제로 HTML 3.2 에서 처음 설명되었습니다 (HTML 2.0에 이러한 설명이 포함되어 있지 않은 것이 놀랍습니다).

type=hidden
이러한 필드는 렌더링되지 않아야하며 서버가 양식과 함께 상태 정보를 저장할 수있는 수단을 제공해서는 안됩니다. 이는 해당 속성에 의해 정의 된 이름 / 값 쌍을 사용하여 양식이 제출 될 때 서버로 다시 전달됩니다. 이것은 HTTP의 상태 비 저장에 대한 해결 방법입니다. 또 다른 접근 방식은 HTTP "쿠키"를 사용하는 것입니다.

<input type=hidden name=customerid value="c2415-345-8563">

HTML 3.2가 JavaScript의 초기 릴리스 이후 에만 W3C 권장 사항이되었다고 언급 할 가치가 있지만 숨겨진 필드가 거의 항상 동일한 목적을 제공한다고 가정하는 것이 안전합니다.


여기서는 간단한 서버 측 실제 사례를 제공 할 것입니다. 예를 들어 레코드가 반복되고 각 레코드에 삭제 버튼이있는 양식이 있고 특정 레코드를 삭제해야하므로 여기에 hidden필드가 표시됩니다. 이 경우 삭제할 레코드의 참조를 가져 오면id

예를 들면

<?php
    if(isset($_POST['delete_action'])) {
        mysqli_query($connection, "DELETE FROM table_name 
                                   WHERE record_id = ".$_POST['row_to_be_deleted']);
                                   //Here is where hidden field value is used
    }

    while(condition) {
?>
    <span><?php echo 'Looped Record Name'; ?>
    <form method="post">
        <input type="hidden" name="row_to_be_deleted" value="<?php echo $record_id; ?>" />
        <input type="submit" name="delete_action" />
    </form>
<?php
    }
?>

요컨대, 원래 목적은 양식의 제출과 함께 제출 될 필드를 만드는 것이 었습니다. 때로는 숨겨진 필드 (예 : 사용자 ID)에 일부 정보를 저장하고 양식 제출과 함께 제출해야하는 경우가있었습니다.

HTML 1995 년 9 월 22 일 사양에서

'TYPE = HIDDEN'인 INPUT 요소는 숨겨진 필드를 나타냅니다. 사용자는이 필드와 상호 작용하지 않습니다. 대신 VALUE 속성은 필드의 값을 지정합니다. NAME 및 VALUE 속성은 필수입니다.


type = 'hidden'을 포함한 양식 요소의 값은 양식이 게시 될 때 서버에 제출됩니다. 입력 유형 = "숨겨진"값이 페이지에 표시되지 않습니다. 예를 들어 숨겨진 필드에 사용자 ID를 유지하는 것은 많은 용도 중 하나입니다.

SO는 찬성 클릭에 숨겨진 필드를 사용합니다.

<input value="16293741" name="postId" type="hidden">

이 값을 사용하여 서버 측 스크립트는 찬성 투표를 저장할 수 있습니다.


기본적으로 숨겨진 필드는 다단계 양식과 함께 사용하는 것이 더 유용하고 이점이 있습니다. 숨겨진 필드를 사용하여 hidden을 사용하여 한 단계 정보를 다음 단계로 전달하고 끝 단계까지 전달되도록 유지할 수 있습니다.

  1. CSRF 토큰.

교차 사이트 요청 위조 는 매우 일반적인 웹 사이트 취약점입니다. 모든 양식 제출에서 비밀 사용자 별 토큰을 요구하면 공격 사이트가 적절한 토큰이 무엇인지 추측 할 수없고 사용자를 대신하여 수행하는 양식 제출은 항상 실패하므로 CSRF 공격을 방지합니다.

  1. 다중 페이지 양식에 상태를 저장합니다.

사용자가 현재있는 다중 페이지 양식에 어떤 단계를 저장해야하는 경우 숨겨진 입력 필드를 사용하십시오. 사용자는이 정보를 볼 필요가 없으므로 숨겨진 입력 필드에서 숨 깁니다.

일반 규칙 : 필드를 사용하여 사용자가 볼 필요가 없지만 양식 제출시 서버로 보내려는 모든 것을 저장합니다.

참고 URL : https://stackoverflow.com/questions/16293741/original-purpose-of-input-type-hidden

반응형