<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 사전 코드 예입니다,기사의 내용과 관련이 없습니다.</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 타임 스탬프는입니다:<span class="hljs-subst">$timestamp</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">str_repeat</span></span><span>(</span><span><span class="hljs-string">"-"</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
--------------------------------------------------
존재하다 PHP 개발 중,사용자 입력 데이터를 처리 할 때,데이터 보안이 중요합니다。특히 데이터베이스 작업과 관련된 시나리오에서,예를 들어, 프로세스 사용자 제출 ID。사용자 제공 데이터가 데이터베이스에 직접 삽입되는 경우,원인이 쉽습니다 SQL 주입 또는 논리 취약성。순수한 숫자 ID,PHP 매우 편리한 기능을 제공합니다 `</span><span><span class="hljs-title function_ invoke__">ctype_digit</span></span><span>()`,검증의 보안을 효과적으로 향상시킬 수 있습니다。
</span><span><span class="hljs-comment">### 1. `ctype_digit()` 그게 뭐야?</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">ctype_digit</span></span><span>()` 예 PHP 내장 기능,用于检查字符串예否全部由数字字符组成。구문은 다음과 같습니다:
```php
</span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ctype_digit</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$text</span></span><span>)
</span></span>문자열의 각 문자가 숫자 ( 0-9 )임을 나타 냅니다 .
문자열에 숫자가 아닌 문자 또는 빈 문자열이 포함되어 있음 을 나타냅니다.
CTYPE_DIGIT () 는 문자열 유형 만 허용한다는 점에 유의해야합니다. 정수 유형이 전달되면 False를 반환하므로 일반적으로 입력을 확인하기 전에 문자열로 변환해야합니다.
Get 매개 변수를 통해 사용자 ID가 전달되었다고 가정합니다.
<span><span><span class="hljs-variable">$userId</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] ?? </span><span><span class="hljs-string">''</span></span><span>;
</span></span>데이터베이스 쿼리에 $ userID를 직접 사용하면 보안 위험이 발생할 수 있습니다.
<span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM users WHERE id = <span class="hljs-subst">$userId</span></span></span><span>"; </span><span><span class="hljs-comment">// 불안정한</span></span><span>
</span></span>이를 수행하는 올바른 방법은 ID가 순수한 숫자인지 확인하는 것입니다.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ctype_digit</span></span><span>(</span><span><span class="hljs-variable">$userId</span></span><span>)) {
</span><span><span class="hljs-comment">// 안전:자신감과 함께 사용할 수 있습니다</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM users WHERE id = <span class="hljs-subst">$userId</span></span></span><span>";
</span><span><span class="hljs-comment">// 데이터베이스 쿼리를 수행하십시오</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-comment">// 불법 입력</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"불법 사용자 ID!"</span></span><span>;
}
</span></span>이러한 방식으로, 사용자가 '1 또는 1 = 1' 과 같은 악성 콘텐츠를 입력하더라도 CType_digit ()에 의해 가로 채어 SQL 주입의 위험을 피할 수 있습니다.
많은 개발자가 숫자를 판단하기 위해 IS_NUMERIC ()를 사용할 수 있지만 CTYPE_DIGIT () 와 크게 다릅니다.
IS_NUMERIC () 도 문자열 "1.23" 또는 "-123"을 숫자로 고려합니다.
CTYPE_DIGIT () 는 순수한 정수 문자열 만 허용하며 마이너스 표지판이나 소수점을 가질 수 없습니다.
따라서 ID와 같은 데이터베이스 기본 키를 처리 할 때 Ctype_digit () 가 더 엄격하고 안전합니다.
실제 애플리케이션에서는 보안을 추가로 보장하기 위해 검증 후 문자열 유형 ID를 정수로 변환 할 수 있습니다.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ctype_digit</span></span><span>(</span><span><span class="hljs-variable">$userId</span></span><span>)) {
</span><span><span class="hljs-variable">$safeId</span></span><span> = (</span><span><span class="hljs-keyword">int</span></span><span>)</span><span><span class="hljs-variable">$userId</span></span><span>; </span><span><span class="hljs-comment">// 정수 유형으로 변환하십시오</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM users WHERE id = <span class="hljs-subst">$safeId</span></span></span><span>";
}
</span></span>이러한 방식으로, 데이터베이스가 쿼리를 실행하더라도 문자열 스 플라이 싱으로 인한 주입 위험은 없습니다.
CTYPE_DIGIT () 는 순수한 디지털 ID를 처리하기위한 보안 확인 도구입니다.
is_numeric () 보다 더 엄격하며, 마이너스 표시 및 소수성과 같은 불법 문자를 피하십시오.
검증이 통과 된 후에는 데이터 보안을 개선하기 위해 강력한 전환과 함께 사용될 수 있습니다.
이를 사용하면 불법 데이터 주입을 효과적으로 방지하고 응용 프로그램의 보안 및 안정성을 향상시킬 수 있습니다.
간단한 ctype_digit () 확인을 통해 대부분의 시나리오에서 사용자가 입력 한 순수한 디지털 ID를 안전하게 처리 할 수 있으며 이는 편리하고 효율적입니다.
<span></span>