2015-01-07 2 views
0

PHP 스크립트에 몇 가지 값을 보내려고하는데 다음을 사용하고 있습니다.GET을 통해 웹 페이지에 데이터를 보내는 가장 안전한 방법은 무엇입니까?

echo '<td><a href="webpage1.php?var1=' . $var . '</a></td>'; 

중요하지 않은 데이터의 경우에는 문제가 없습니다. 그러나이를 통해 사용자는 URL에 데이터를 추가하고 보안 데이터를 보거나 얻을 수 있습니다.

다음은 임의의 숫자 나 문구

  • 만들기 (데이터를 게시하지 않고)

    • 그것을 해결 GET과 및 세션 변수로이 값을 전달하는 방법에 대한 내 생각

    • 중요한 것을하기 전에 두 가지가 일치하는지 비교하십시오 (GET & 세션)

    다른 방법으로이 작업을 수행하거나 양식에서 더 나은 방법으로 데이터를 게시하는 중입니까?

  • +3

    사용자는 POST를 통해 데이터를 조작 할 수도 있습니다. 하나는 다른 것보다 안전하지 않습니다. https://github.com/wiztools/rest-client와 같은 프로그램을 사용하면 원하는 모든 요청을 서버에 보낼 수 있습니다. –

    +3

    GET 값이 세션에 저장 될 수 있다면 왜 그곳에 값을 저장하지 않고 클라이언트에게 전송하지 않는 것이 좋을까요? – Jim

    +1

    게시가 더 좋습니다. GET으로 수정해서는 안됩니다. 검색 엔진에서 링크를 크롤링하면 GET에서 삭제 된 것을 상상해보십시오. 그러면 데이터가 비워 질 수 있습니다. –

    답변

    0

    HTTP 프로토콜을 통해보다 안전하지 않은 POST가 있습니다. 보안 측면에서 본질적으로 같습니다. 보안 데이터 및 SSL을 통해 암호화합니다.

    보안에 관한 한 본질적으로 동일합니다. POST가 URL을 통해 정보를 공개하지 않는 것은 사실이지만 클라이언트와 서버 간의 실제 네트워크 통신에서 GET만큼 많은 정보를 제공합니다. 민감한 정보를 전달해야하는 경우 첫 번째 방어선은 보안 HTTP를 사용하여 전달하는 것입니다. Source

    당신은 와이어를 통해 $var를 전달하는, 당신은, 예를 들어, 당신은 검사, 서버 측을 수행해야한다, 다른 사용자의 데이터에 액세스하기 위해 수정 될 수 있다고 걱정하는 경우에 사용자 여부 세션에 해당 변수 $var에 대한 액세스 권한이 있습니다. 일반적으로 이것은 클라이언트 쪽에서 요소와 연관시키는 id 변수이며 AJAX 또는 일반 HTTP 요청을 통해 전달됩니다.

    var가 실제로 서버 측 서버를 가리키는 ID 인 경우이 변수를 수정하면 404 찾을 수 없음이 반환됩니다.

    URL로 /resources/24을 상상해보십시오. 24는 고유 ID입니다. 첫 번째 호출 지점은 현재 로그인 한 사용자가 24 번에 액세스 할 수 있는지 확인하는 것입니다 (데이터 모델은 일반적으로 여기에서 사용됩니다. 리소스 테이블은 사용자와 일대일로 많이 연관되어 있으므로 인증을위한 기반으로).

    실제로 POST는 GET보다 안전하지 않습니다. 중요한 정보를 전달해야하는 경우 https : //를 사용하고 중요한 데이터를 암호화하십시오. 그렇지 않으면 응용 프로그램의 컨텍스트에서 올바르게 느끼는 것을 수행하고 현재 로그인 한 사용자 서버 측에 대해 권한을 부여하십시오.

    2

    데이터가 사용자로부터 안전하게 보호되어야하는 경우 브라우저로 절대 보내야합니다.

    서버에 보관하고 대신 브라우저에서 ID를 참조 할 수있는 ID를 지정하십시오. 필요한 모든 Authn/Authz를 적용하십시오.

    0

    보안을 유지하는 또 다른 방법은 $ var가 무엇을 기대하는지 알아야한다는 것입니다. 따라서 사용자가 규칙에 맞지 않는 URL에 뭔가를 제공 한 경우 거부 할 수 있습니다. 정말로 민감한 $ var가 실제로 얼마나 중요한가에 달려 있습니다.

    관련 문제