2012-04-28 14 views
1

私は次のようになりリンクがあります。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エラーを受け取らないようにするにはどうすればいいですか?

+0

質問は何ですか? – Adam

+0

どのように私はそのテキストで2番目のURLを使用しても、私は404エラーが表示されないことを確認できますか? – fxuser

答えて

1

あなたの質問は本当に404を防ぐ方法ではなく、安全なURLスラッグを作る方法です。

following page from the user guideをご覧になるには、xss_clean()および/またはsanitize_filename()を使用して、文字列の危険な文字を取り除くことができます。データベースにデータを挿入する前に、またはスラッグが作成される前に、これを行うことをお勧めします。

the url_title() methodもありますが、どのようにxss文字列を処理するかはわかりません。理想的には、3つの方法のすべてを組み合わせてテストします。

これを実行したら、$config['permitted_uri_chars']を変更して、これらの2つのセキュリティ方法を許可するようにしなければならないかもしれませんが、少なくともより安全でなければなりません。

0

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

へのconfig.php

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

の変更 - しかし、それはMASSIVEセキュリティ問題まであなたを開く - あなたは本当に、本当に、本当にそれをやりたいいけません。問題へのあなたのアプローチを再考する必要があります。 flash_messageをテキストとともに使用するか、_POSTを使用することをお勧めします。その種類のテキストを処理するためにURLを使用すると、トラックの下に問題とエラーが発生します。

+0

なので、ユーザーが実際に ''を含む投稿を書くと、許可されたuri文字のためcodeigniterエラーが発生します... isntこれは間違っている?これはURLに読み込めなければならないのでしょうか?またはその良いなどのオープンタグを削除するなど...スラグはきれいになります – fxuser

+0

それはあなたのコントローラの周りにどのようにあなたの送信データに来る。あなたがURLを介してそれを行うなら、あなたは上記のようなURLの問題にぶつかると思います。ユーザーはあなたが持っていたID(最初のリンク)を表示させてから、ビュー+変数_POSTなどで追加のデータを生成する必要があります。 – Laurence

+0

もっと良いSEOのためにスラッグを追加すると思っていましたか?上記のような<>が起こる可能性は1つです。ユーザーの投稿を制御できないためです...私はIDを使用して、後でどのように対処するかを見ていきます... – fxuser