質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

1回答

2010閲覧

CodeIgniterでの悪意のある入力について

oya2

総合スコア42

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

1クリップ

投稿2015/01/20 13:45

編集2015/01/20 13:45

CodeIgniterには、各要求に対して自動的にGET/POST/COOKIEの配列キーをフィルターし、危険そうなアプリケーションは作動を停止するような関数があります。

ユーザーが悪意を持ってインプットキーを利用するのを防ぐため、キーはアルファベットと数字を組み合わせたものでのみ書かれていることを確かめる必要があります。

例えば、このような書き方をします。

// 各GET/POST/COOKIEキーを$strとする
if ( ! preg_match(""/^[a-z0-9:_\/-]+$/i"", $str))
{
exit('無効な字が含まれています。');
}

こうしておくと、例えば<input name=""TE$T"">や?name|first=1のようなクエリ文字列を間違えてポストしてしまったときに、エラーとして知らせてくれます。
こうしておけば、アプリケーションを開発している間、簡単なキーの名前をつけるのを防いだり、間違いに気付くことができると思います。

しかし、どのような場合にユーザーは悪意で$_POSTのキーを利用することがあるのでしょうか。
インプット値も利用しやすいと思うのですが、 なぜこれではなくキーを利用するのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とても良い質問ですね。いいところに目をつけています。実際、私たちからしてみれば何から守られているのかわからないですよね。

代表的なものを以下に挙げます。

SQLインジェクションになりそうなもの
シェルコマンドを使用して実行できる文字列
ディレクトリトラバーサルアタックとなるようなもの
クロスサイトスクリプトアタックのようなもの

しかし、これら以外の理由でpreg_match(""/^[a-z0-9:_\/-]+$/i"", $str).を使ってコードを守りたいのかは、あまりよくわかりません。

Codelgniterはたくさんのユーザーが利用しているため、今まで遭遇したことのない問題を回避するためにも厳重に守っているのだと思います。

投稿2015/01/20 14:35

編集2015/02/20 04:01
ctsubasa

総合スコア118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問