2011-07-05 2 views
0

TLDR; 악의적 인 데이터를 대체 할 때 xss_clean()의 데이터베이스 로깅을 활성화하려고합니다.로깅을 활성화하기 위해 CodeIgniter Security.php를 확장하십시오.


내가 Security.php에서 xss_clean() 함수의 데이터베이스 로깅을 사용하려면, 기본적으로 내가 뭘 원하는 내가 성공적으로 확인되었다와 xss_clean()를 공급하고있어 입력이 악의를 가지고 있는지 알고있다 필터링 된 데이터 또는 필터링되지 않은 데이터 그래서 기본적으로

:

$str = '<script>alert();</script>'; 
$str = xss_clean($str); 

나를 위해 이상적으로 어떤 일이 일어날 것이라고 :

  1. 청소 XSS에서 문자열
  2. 돌아 깨끗한 $ str을 악마의 데이터에 대한
  3. 입력 정보 (결국 로그인 한 사용자)는

Security.php 파일에서 볼 수있는 한, 나를 위해이 일을 처리하는 것이나 후크 등으로 할 수있는 일은 없습니다. 물론 착각 할 수도 있습니다.

Security.php에서 얼마나 많은 대체물을 로깅했는지 기록하지 않았으므로 Security.php를 확장해야하며 원래 기능의 현재 코드를 복사하여이를 지원하도록 변경 했습니까? 아니면 CodeIgniter의 향후 업데이트 (특히 변경 및 확장되는 파일)에 더 깨끗하고 안전한 솔루션이 있습니까?

답변

1

보안 클래스를 확장해야하지만 입/출력 로그가 필요한 경우 코드를 복사하여 붙여 넣을 필요가 없습니다. 다음의 라인을 따라 뭔가 당신이 그렇게 할 수있는 것 :

Class My_Security extends CI_Security { 

    public function xss_clean($str, $is_image = FALSE) { 
     // Do whatever you need here with the input ... ($str, $is_image) 

     $str = parent::xss_clean($str, $is_image); 

     // Do whatever you need here with the output ... ($str) 

     return $str; 
    } 

} 

그런 식으로, 당신은 단지 기존의 기능을 포장 및 입/출력 장난된다. 기본 메소드의 변경이 염려되는 경우 PHP 함수 get_args을 사용하여 인수 객체를 투명하게 전달할 수 있습니다.

+0

좋아, 그게 내 문제의 절반을 해결했습니다. 지금은 실제로 내 모델을로드하는 방법을 알아 내려고하고 있습니다. 그게 여기서 옳은 일인가? 나는 $ this-> load = load_class ('Loader', 'core');를 시도한 다음 $ this-> load-> model ('users_model');을 실행하려고 시도했지만, '$ this-> load-> model();' – Tobias

관련 문제