이 기사의 예에서는 PHP에서 SQL 주입 방지를 간단하게 구현하는 방법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
여기에는 주로 php와 mysql의 조합에 대한 필터링이 많지 않습니다.
일반적인 주입 방지를 위해서는 PHP의 addlashes 기능을 사용하면 됩니다.
다음은 복사한 코드입니다.
PHP 코드:
$_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc()) { if (is_array($content)) { foreach ($content as $key=>$value) { $content[$key] = addslashes($value); } } else { addslashes($content); } } return $content; }
시스템을 구축하고 싶다면 역시 복사되어 있는 다음 코드를 사용하면 됩니다.
PHP 코드:
function inject_check($sql_str) { return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤 } function verify_id($id=null) { if (!$id) { exit('没有提交参数!'); } // 是否为空判断 elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断 elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断 $id = intval($id); // 整型化 return $id; } function str_check( $str ) { if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开 $str = addslashes($str); // 进行过滤 } $str = str_replace("_", "\_", $str); // 把 '_'过滤掉 $str = str_replace("%", "\%", $str); // 把 '%'过滤掉 return $str; } function post_check($post) { if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开 $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 } $post = str_replace("_", "\_", $post); // 把 '_'过滤掉 $post = str_replace("%", "\%", $post); // 把 '%'过滤掉 $post = nl2br($post); // 回车转换 $post = htmlspecialchars($post); // html标记转换 return $post; }
더 많은 PHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "php 프로그래밍 보안 튜토리얼", "php 보안 필터링 기술 요약"을 확인할 수 있습니다. "PHP 연산 요약 및 연산자 사용법", "PHP 네트워크 프로그래밍 기술 요약", "PHP 기본 구문 입문 튜토리얼", "PHP 오피스 문서 운영 스킬 요약(워드, 엑셀, 액세스, ppt 포함)", "php 객체지향 프로그래밍 입문 튜토리얼", "php 문자열(string) 사용법 요약 ", " php mysql 데이터베이스 작업 입문 튜토리얼" 및 "php 일반 데이터베이스 작업 기술 요약"
이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.