> 백엔드 개발 > PHP 튜토리얼 > PHP에서 SQL 주입을 방지하는 방법 (1)

PHP에서 SQL 주입을 방지하는 방법 (1)

WBOY
풀어 주다: 2016-07-29 09:15:00
원래의
996명이 탐색했습니다.

(1) mysql_real_escape_string – 연결의 현재 문자 집합을 고려하여 SQL 문에 사용된 문자열에서 특수 문자를 이스케이프합니다.
사용 방법은 다음과 같습니다.

<code>$sql = "<span><span>select</span><span>count</span>(*) <span>as</span> ctr <span>from</span> users <span>where</span> username =<span>'".mysql_real_escape_string($username)."'</span><span>and</span> password=<span>'". mysql_real_escape_string($pw)."'</span> limit <span>1</span><span>";</span></span></code>
로그인 후 복사

<code><span><span>mysql_real_escape_string</span><span>()</span></span></code>
로그인 후 복사

을 사용자 입력 주위의 래퍼로 사용하여 사용자 입력에 악의적인 SQL 삽입을 방지합니다.
(2) SQL 주입을 방지하려면 Magic_quotes_gpc를 활성화하세요.
php.ini에 설정이 있습니다: Magic_quotes_gpc = Off
이는 기본적으로 꺼져 있습니다. 켜져 있으면 사용자가 제출한 SQL 쿼리를 자동으로 변환합니다.
예를 들어 '를 '로 변환하는 등의 작업은 SQL 주입을 방지하는 데 중요한 역할을 합니다.
Magic_quotes_gpc=Off인 경우 addlashes() 함수를 사용하세요
(3) 사용자 정의 기능

<code><span><span>function</span><span>inject_check</span><span>(<span>$sql_str</span>)</span> {</span><span>return</span> eregi(<span>'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'</span>, <span>$sql_str</span>);
} 

<span><span>function</span><span>verify_id</span><span>(<span>$id</span>=null)</span> {</span><span>if</span>(!<span>$id</span>) {
        <span>exit</span>(<span>'没有提交参数!'</span>); 
    } <span>elseif</span>(inject_check(<span>$id</span>)) { 
        <span>exit</span>(<span>'提交的参数非法!'</span>);
    } <span>elseif</span>(!is_numeric(<span>$id</span>)) { 
        <span>exit</span>(<span>'提交的参数非法!'</span>); 
    } 
    <span>$id</span> = intval(<span>$id</span>); 

    <span>return</span><span>$id</span>; 
} 


<span><span>function</span><span>str_check</span><span>( <span>$str</span> )</span> {</span><span>if</span>(!get_magic_quotes_gpc()) { 
        <span>$str</span> = addslashes(<span>$str</span>); <span>// 进行过滤 </span>
    } 
    <span>$str</span> = str_replace(<span>"_"</span>, <span>"\_"</span>, <span>$str</span>); 
    <span>$str</span> = str_replace(<span>"%"</span>, <span>"\%"</span>, <span>$str</span>); 

   <span>return</span><span>$str</span>; 
} 


<span><span>function</span><span>post_check</span><span>(<span>$post</span>)</span> {</span><span>if</span>(!get_magic_quotes_gpc()) { 
        <span>$post</span> = addslashes(<span>$post</span>);
    } 
    <span>$post</span> = str_replace(<span>"_"</span>, <span>"\_"</span>, <span>$post</span>); 
    <span>$post</span> = str_replace(<span>"%"</span>, <span>"\%"</span>, <span>$post</span>); 
    <span>$post</span> = nl2br(<span>$post</span>); 
    <span>$post</span> = htmlspecialchars(<span>$post</span>); 

    <span>return</span><span>$post</span>; 
}</code>
로그인 후 복사

http://www.phpddt.com/php/228.html

위 내용은 PHP에서 SQL 인젝션을 방지하는 방법(1)을 관련 내용까지 포함하여 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿