2012-04-28 4 views
1

I는 다음과 같이 링크가 있습니다CodeIgniter의 URL이 제목에 특수 문자 오류

www.localsite.dev/posts/332635955335419755 

꽤 잘 작동하고 난 ID와 게시물을 볼 수 = 332635955335419755

을하지만 난 몇 가지를 추가 할 때 더 아름다운 URL에 대한 URL로 텍스트의 ... Codeigniter는 몇 가지 특수 문자가있는 경우 404 페이지 오류를 표시합니다 ... 사실 XSS 등을 시도하면 예외는 아닙니다. XSS가 실행됩니다. 또는 그냥 404 페이지 오류 던져 및 ID 뒤에 텍스트를 제거하면 잘 작동합니다 ...

www.localsite.dev/posts/332635955335419755/<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> 

그래서 슬러그가 이러한 문자를 가지고 있다면 404 오류가 발생하지 않도록 할 수 있습니까?

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-<>/'; 

에 config.php를

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 

에서

+0

무엇이 문제입니까? – Adam

+0

어떻게 그 텍스트와 함께 두 번째 URL을 사용하더라도 404 오류가 발생하지 않도록 할 수 있습니까? – fxuser

답변

1

귀하의 질문은 실제로 404를 방지하는 방법이 아니라 안전한 URL 슬러그를 만드는 방법입니다.

following page from the user guide을 살펴보면 xss_clean() 및/또는 sanitize_filename()을 사용하여 위험한 문자를 스트링에서 제거 할 수 있습니다. db에 데이터를 삽입하기 전에 또는 슬러그가 만들어지기 전에이를 수행하기를 원할 것입니다.

또한 the url_title() method이 있지만 xss 문자열을 처리하는 방법을 모르겠습니다. 이상적으로는 세 가지 방법을 모두 조합하여 사용하십시오.

이 작업을 완료 한 후에는 $config['permitted_uri_chars']을 변경해야만 이러한 두 가지 보안 방법을 허용 할 수 있지만 적어도 더 안전해야합니다.

0

변경하지만 - 당신은 정말 정말 정말하고 싶지 해달라고 - 그것은 대규모 보안 문제에 당신을 엽니 다. 문제에 대한 접근 방식을 다시 생각해야합니다. flash_message를 텍스트 또는 _POST와 함께 사용하는 것이 좋습니다. 그 종류의 텍스트를 처리하기 위해 URL을 사용하면 트랙 아래로 문제와 오류가 발생합니다. ...

+0

그래서 사용자가 실제로' '을 포함하는 글을 쓰면 허용 된 uri chars 때문에 codeigniter 오류가 발생합니다 ... isnt 이 잘못? 이 URL에로드 할 수 있어야합니까? 또는 예를 들어 열려있는 태그를 제거하는 것이 좋습니다 ... 등등 슬러그가 깨끗합니다. – fxuser

+0

모든 것이 컨트롤러 주변의 데이터를 전송하는 방법에 달려 있습니다. URL을 통해이 작업을 수행한다면 위와 같은 URL에 문제가 발생할 것이라고 생각합니다. 당신은 단지 당신이 (첫 번째 링크) - 그때 당신의보기를 통해 추가 데이터를 생성 + _POST 등 – Laurence

+0

을 전달하는 ID를 볼 사용자가 더 나은 서구 (때문에 슬러그를 추가 할 생각?) ... 만약 거기 <> 위와 같은 일이 일어날 수있는 기회 중 하나입니다. 사용자가 게시하는 것을 제어 할 수 없기 때문에 ... 나는 ID를 고수하고 나중에 어떻게 처리 할 것인지 알아볼 것입니다 ... – fxuser