PHP에서 parse_url () 함수는 URL 문자열을 처리하는 데 중요한 도구입니다. 완전한 URL을 프로토콜, 호스트, 경로 등과 같은 여러 구성 요소로 분해 할 수 있습니다. 일반적으로 우리는 체계 , 호스트 , 경로 , 쿼리 등과 같은 필드에 중점을 둘 수 있지만 Parse_url ()가 사용자 와 같은 두 필드를 반환하고 배열에서 전달된다는 것을 알았습니까?
오늘날,이 두 분야의 사용과 실제 개발에서의 중요성에 대해 이야기합시다.
URL의 사용자 정보 부분은 일반적으로 사용자 : Pass@Domain 과 같은 형식입니다.
https://username:[email protected]/path?query=123
이 URL을 구문 분석하기 위해 parse_url () 에 전화하면 다음을 얻을 수 있습니다.
$url = "https://username:[email protected]/path?query=123";
$parts = parse_url($url);
print_r($parts);
산출:
Array
(
[scheme] => https
[user] => username
[pass] => password
[host] => gitbox.net
[path] => /path
[query] => query=123
)
이는 사용자 및 패스 필드가 각각 URL의 사용자 이름 및 비밀번호 부품에 해당 함을 의미합니다.
가장 직접적인 목적은 URL에 대한 인증 정보를 제공하는 것입니다. HTTP 기본 인증 또는 FTP와 같은 일부 프로토콜에서 URL은 자동으로 로그인하거나 인증하는 데 사용될 수 있습니다.
예를 들어, 일부 개인 GIT 저장소에 액세스 할 때 URL에는 사용자 자격 증명이 포함될 수 있습니다.
$repoUrl = "https://myuser:[email protected]/myrepo.git";
자동화 된 스크립트 또는 CI/CD 프로세스에서 사용자를 구문 분석하고 패스 한 후 인증 요청 헤더를 생성하거나 API로 전달하여 인증 프로세스를 단순화하는 데 사용될 수 있습니다.
Parse_url () 을 통해 정보 의이 부분을 추출한 후, 프로그램은 하드 코딩 된 사용자 이름 및 비밀번호보다는 다른 사용자 ID에 대한 액세스 요청을보다 유연하게 처리 할 수 있습니다.
예를 들어:
$url = "https://myuser:[email protected]/resource";
$parts = parse_url($url);
$username = $parts['user'] ?? '';
$password = $parts['pass'] ?? '';
$host = $parts['host'];
// 인증 헤더로 요청을 생성합니다
$auth = base64_encode("$username:$password");
$headers = [
"Authorization: Basic $auth"
];
// 그런 다음 사용하십시오 curl 요청하십시오
이러한 방식으로 코드 로직은 URL에서 인증 정보를 동적으로 구문 분석하고 다른 사용자에게 적응할 수 있습니다.
사용자 및 패스 필드는 편리하지만 URL에 직접 민감한 정보를 작성하면 특정 보안 위험이 있습니다.
URL이 기록되어 사용자 이름 및 비밀번호 누출이 발생할 수 있습니다.
브라우저 또는 프록시는 자격 증명이 포함 된 URL을 캐시 할 수 있습니다.
일부 도구는 사용자 이름과 비밀번호로 URL을 지원하지 않습니다.
따라서 권장됩니다.
공개적으로 자격 증명이 포함 된 URL을 직접 노출시키지 마십시오.
생산 환경에서 더 안전한 인증 방법 (OAUTH, 토큰 등)을 사용하십시오.
사용자를 사용하고 신뢰할 수있는 환경에서만 통과하십시오 .
parse_url () 의 사용자 및 패스 필드는 URL 사용자 정보의 직접 매핑이며 인증이 필요한 URL을 처리 할 때 매우 중요합니다. 합리적으로 이해하고 활용하면보다 유연하고 지능적인 PHP 네트워크 요청 프로그램을 작성하는 데 도움이 될 수 있습니다.
그러나 보안 위험을 피하기 위해 사용자 이름과 비밀번호를 처리해야합니다.
<?php
$url = "https://admin:[email protected]/api/data";
$parts = parse_url($url);
$user = $parts['user'] ?? null;
$pass = $parts['pass'] ?? null;
$host = $parts['host'] ?? null;
$path = $parts['path'] ?? '/';
// 사용 curl 테이프를 보내십시오 Basic Auth 요구
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://$host$path");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($user && $pass) {
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
}
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
위의 코드는 URL에서 사용자 이름과 비밀번호를 구문 분석하고 HTTP 인증에 사용하는 방법을 보여줍니다.