최근에 나는 주제 투표 웹사이트에서 일하고 있었는데, 그 클라이언트는 프로그래밍에 관해 몇 가지를 알고 있었습니다. SQL 주입을 방지하기 위해 일부 문자를 필터링하려면 특별한 요구 사항이 있습니다. 원래 이 분야에 대한 특별한 연구는 없었습니다. 하하, 또 다시 유용주의를 이어가고 있습니다. discuz 포럼에서 SQL 안티 인젝션 기능을 받아보세요!
코드 복사 코드는 다음과 같습니다.
$magic_quotes_gpc = get_magic_quotes_gpc()
@extract(daddslashes( $_COOKIE) );
@extract(daddslashes($_POST));
@extract(daddslashes($_GET))
if(!$magic_quotes_gpc) {
$_FILES = Daddslashes($ _FILES);
}
function Daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string) )) {
foreach($string as $key => $val) {
$string[$key] = Daddslashes($val, $force)
}
} else {
$ string = addlashes($string);
}
}
return $string;
}
코드 복사 코드는 다음과 같습니다.
/*
함수 이름: inject_check()
함수 함수: 감지 제출된 값에 주입 방지 및 서버 보안 보호를 위한 SQL 주입 문자가 포함되어 있습니까?
매개변수: $sql_str: 제출된 변수
반환 값: 감지 결과 반환, true 또는 false
*/
function inject_check($sql_str) {
return eregi('select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $ sql_str ); // 필터
}
/*
함수 이름: verify_id()
함수 함수: 제출된 ID 클래스 값이 유효한지 확인
매개변수: $id: 제출된 ID 값
반환값: 처리된 ID를 반환합니다.
*/
function verify_id($id=null) {
if (!$id) {exit('매개변수가 제출되지 않았습니다!') } // 공허한 판단인지
elseif (inject_check($id)) {exit('제출된 매개변수가 불법입니다!') } // 주입 판단
elseif (!is_numeric($id)) {exit(' 제출된 매개변수가 불법입니다!'); } // 숫자 판단
$id = intval($id); // 정수화
return $id; : str_check()
함수: 제출된 문자열 필터링
매개변수: $var: 처리할 문자열
반환값: 필터링된 문자열 반환
*/
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // Magic_quotes_gpc가 켜져 있는지 확인
$str = addlashes($str); // 필터
}
$str = str_replace("_" , "_", $str); // '_' 필터링
$str = str_replace("%", "%", $str) // '%' 필터링 Drop
return $str ;
}
/*
함수명: post_check()
함수 함수: 제출된 편집 내용 처리
매개변수: $post: 제출할 내용
반환값: $post : 필터링된 내용 반환
*/
function post_check($post) {
if (!get_magic_quotes_gpc()) { // Magic_quotes_gpc 활성화 여부 확인
$post = addlashes($post); // Magic_quotes_gpc가 열리지 않을 때 제출된 데이터 필터링
}
$post = str_replace("_", "_", $post) // 필터 넣기 '_'
$post = str_replace( "%", "%", $post); // '%' 필터링
$post = nl2br($post); // 변환 입력
$post = htmlspecialchars($post); 태그 변환
$post 반환
}
위 내용은 SQL 인젝션을 방지하기 위한 discuz의 PHP 기능을 소개하고 있으며, 관련 내용도 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.