실제 웹 애플리케이션에서 데이터 전송 (예 : HTTP 요청 및 응답)은 악의적으로 가로 채고 변조 될 수 있습니다. 데이터의 무결성을 확인하고 중간에서 데이터가 수정되는 것을 방지하기 위해 해시 알고리즘을 사용하여 데이터를 확인할 수 있습니다. 요청 또는 응답에 데이터의 해시 값을 추가함으로써, 수신기는 동일한 해시 알고리즘을 사용하여 수신 된 데이터의 해시 값을 다시 계산하고이를 수신 된 해시 값과 비교하여 전송 중에 데이터가 변조되었는지 여부를 결정할 수 있습니다.
먼저 해시 알고리즘 (예 : SHA256)을 사용하여 요청 또는 응답의 해시 값을 생성해야합니다. PHP에서는 해시 () 함수를 사용하여 해시 값을 생성 할 수 있습니다. 해시 값을 생성하기위한 샘플 코드는 다음과 같습니다.
$data = "민감한 데이터 컨텐츠"; // 이를 전송하려는 데이터로 바꾸십시오
$hash_value = hash('sha256', $data); // 데이터를 생성합니다SHA256해시 가치
이 예에서는 SHA256 해싱 알고리즘을 사용합니다. MD5 또는 SHA512와 같은 요구에 따라 다른 해싱 알고리즘을 선택할 수 있습니다.
데이터 무결성을 보장하기 위해 해시 값을 HTTP 요청의 헤더에 추가 할 수 있습니다. CURL 라이브러리를 사용하여 HTTP 요청을 해시 값으로 보내기 위해 서버가 요청을 수신 할 때 데이터의 무결성을 확인할 수 있는지 확인할 수 있습니다.
$url = "https://m66.net/api/verify"; // 요청URL,대체하십시오m66.net도메인 이름
$data = "민감한 데이터 컨텐츠"; // 전송 될 데이터
$hash_value = hash('sha256', $data); // 데이터를 생성합니다해시 가치
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-Data-Hash: ' . $hash_value // 将해시 가치添加到请求头中
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
위의 코드에서는 해시 값을 사용자 정의 HTTP 헤더 필드 X-Data-Hash 로 서버로 보냅니다. 이를 통해 데이터가 수신되면 서버가 해시 확인을 할 수 있습니다.
서버가 요청을 수신 한 후에는 데이터의 해시 값이 요청에 첨부 된 해시 값과 일치하는지 확인해야합니다. 서버 측에서 수신 된 데이터의 해시 값을 다시 계산하고 요청 헤더의 해시 값과 비교할 수 있습니다.
$received_hash = $_SERVER['HTTP_X_DATA_HASH']; // 获取请求头中的해시 가치
$received_data = file_get_contents('php://input'); // 요청 본문에서 데이터를 가져옵니다
// 重新计算接收到数据的해시 가치
$calculated_hash = hash('sha256', $received_data);
// 比较计算出的해시 가치与请求中的해시 가치
if ($received_hash === $calculated_hash) {
echo "데이터가 완료되었습니다,변조하지 않습니다";
} else {
echo "데이터가 변조되었을 수 있습니다,확인이 실패했습니다";
}
서버 측에서 먼저 HTTP 요청 헤더에서 해시 값을 얻고 요청 본문에서 데이터의 해시 값을 다시 계산합니다. 두 사람이 일관성이 있으면 데이터가 변조되지 않았습니다. 일관성이없는 경우, 전송 중에 데이터가 악의적으로 수정 될 수 있음을 의미합니다.
데이터의 해시 검증을 요청하는 것 외에도 전송 중에 응답 데이터가 변조되는 것을 방지하기 위해 검증을 위해 서버 응답에 해시 값을 추가 할 수도 있습니다. 마찬가지로 서버는 응답 데이터의 해시를 생성하여 응답 헤더에 추가 할 수 있습니다.
$response_data = "이것이 서버가 응답하는 것입니다"; // 서버 응답 데이터
$response_hash = hash('sha256', $response_data); // 计算响应数据的해시 가치
header('X-Response-Hash: ' . $response_hash); // 将해시 가치添加到响应头部
echo $response_data;
클라이언트는 응답 헤더에서 응답 데이터와 해시 값을 수신하여 응답 데이터의 해시 검증을 통해 무결성을 보장 할 수 있습니다.
실시간 해시 검증 기술을 통해 우리는 중간에 사람의 공격을 효과적으로 방지 할 수 있습니다. PHP 에서이 기능을 구현하는 것은 매우 간단합니다. 해시 알고리즘을 사용하여 데이터의 해시를 생성하고 HTTP 요청 헤더 또는 응답 헤더를 통해 확인을 위해 수신기로 전달하십시오. 이 방법은 암호화 된 통신을 대체 할 수는 없지만 데이터 전송 중 보안을 개선하기위한 효과적인 보충제 역할을 할 수 있습니다.