2012-12-20 7 views
4

나는 URL의 등을 가지고 codeiniter와 mode_rewrite를 사용CodeIgniter는 : URL 보호

/controller/param1/param2 

시대의 PARAM1 및 PARAM2의 대부분은 (즉 번호의) 데이터베이스와 아무것도에서 ID가 될 것입니다.

문제는 잠재적 인 해커 공격으로부터 보호하기 위해 무엇을해야합니까? 그걸 위해 html 정수기를 사용해야합니까, 아니면 더 좋은 방법이 있습니까, 아니면 무언가를 할 필요가 있습니까?

저는 보안과 보호면에서 정말 새로운데, html 정수기에 대해 들었습니다. 초보자처럼 어디서나 사용하지 않을 것 같습니다.

난 그냥 preg_match()해야합니까?

preg_match()가 soluton 인 경우 어떤 표현식이 숫자 값 (ID 값) 만 허용합니까?

설정 파일에서
+0

당신에게 XSS 나 SQL 주입에 대해 주로 걱정하고 있습니까? 답은 두 공격 벡터에 따라 다르기 때문에 – slimdrive

+0

둘 다 생각합니다. ID는 나중에 db 쿼리를 통해 데이터에 액세스하는 데 사용되며 그 전에 무언가가 아마도 xss vise를 악용 될 수 있음을 의미합니다. 숫자로만 처리 할 수 ​​있도록 제한해야하므로 preg_match()가 도움. – ignite1688846

+0

사실 나는 SQL 삽입이 codeigniter의 활성 레코드 클래스에 의해 방지된다고 생각합니다. – ignite1688846

답변

2

찾을 수

이미 다른 한편으로는이를 통해 CodeIgniter의에서 이루어집니다 당신이 내가 유일하게 맞는 사람이 할 수있는 검증을 가지고 추천 할 것입니다 레그로 경기를 사용할 필요가 없습니다
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-+'; 

이 링크에 액세스 예를 들어 사용자 또는 기타 사용자 만 읽을 수있는 항목 ID가 표시되지 않으면 컨트롤러의 특정 검사 후 라우팅 또는 리디렉션하여 처리 할 수 ​​있습니다.

그러나 보안에별로 좋지는 않지만 내가 아는 것은 지금까지

0

이것은 codeignitor 특정 질문이 아니지만 일반적으로 사용자 입력을 문질러 닦는 간단한 해결책은 SQL을 제출하기 전에 & 값을 인용 부호로 이스케이프 처리하는 것입니다. 이 같은

뭔가 (: 검증되지 않은 PHP 코드 경고) : 일하는 것이

function escapeAndQuoteValue($value, $forceQuote = false) { 
    if (is_null($value)) { 
     $escapedString = 'NULL'; 
    } elseif (is_bool($value)) { 
     $escapedString = $value ? 'TRUE' : 'FALSE'; 
    } elseif (isDigits($value) && $value[0] != '0') { 
     $escapedString = $value; //return ints verbatim -- unless it has a leading zero 
    } else { 
     $escapedString = pg_escape_string($value); 
    } 

    $quoteString = 
     $forceQuote  || 
     is_null($value) || 
     is_bool($value) || 
     (isDigits($value) && $value[0] != '0'); 

    return $quoteString ? "'$escapedString'" : $escapedString; 

}