• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:管理画面の入力フォームをhtml編集可能にする場合)

管理画面の入力フォームをHTML編集可能にする場合の攻撃対策

hogehoge78の回答

回答No.4

http://php.benscom.com/manual/ja/info.configuration.php#ini.magic-quotes-gpc もしかするとコレが原因かもしれません。 PHPには、Get/Post/Cookieの値がそれぞれの変数に格納される前に、自動的にエスケープ処理を行う設定があります。 php.iniでその項目を無効にするか、PHPスクリプト上で、変数に格納された値一つ一つを、stripslashes関数でエスケープされた文字を解除する必要があります。 http://php.benscom.com/manual/ja/function.get-magic-quotes-gpc.php こちらのページのユーザ投稿の一番最初の「stripper」関数の投稿が参考になると思います。 流れは、もしget_magic_quotes_gpc関数にてGPCのエスケープを行う設定になっているのが確認されたら、stripslashes関数にて、エスケープを解除する というプログラムです。

mihop
質問者

補足

回答ありがとうございます。 いろいろ調べていただきありがとうございます。 magic_quotes_gpcの設定をOFFにしたら上記の問題は解決できました。 しかし、入力ボックス上ではタグで囲まれた値が表示されていても、実際はそれをhtmlで表示する際に、エスケープされてないものを表示するということですよね? 例えば、<script>alert (○○);</script>というような文字が入力された場合は、実行されてしまうと思うのですが、その場合はエスケープすべきものをエスケープしてないということになるかと思います。 クロスサイトスクリプティングの対策になっていないと思うのですが。。。 私の解釈が間違っていたらごめんなさい。 よろしくお願いいたします。

関連するQ&A

  • アクセスフォーム画面でのチェックボックス

    アクセス初心者です。 会社にある既存のアクセスDBを使いデータ処理をしています。 商品を管理するためのDBなんですが、単純に言うと、まずフォーム画面上に何千もの商品名がエクセルのような一覧表になってズラ~っと表示され、その中からひとつを選択するとその商品の詳細情報の画面に移行、そこで情報を管理更新するというDBです。 困っているのは、最初の一覧になってる画面の商品名の横にそれぞれチェックボックスがついているんですが、そのチェックボックスが反応してくれなくなったんです。(クリックしてもチェックマークが入らない) 先ほどまで問題なく使用できていたのですが・・・ただ、大元のDB部分は問題なく動いております。 何千もある商品情報を年1回チェックするんですが、この商品はチェック済、これはまだということが一覧表示の際に確認できるように使っているだけのチェックボックスなので、中身のDBとの関連はないと思われます。 フォームデザインビュー上で、そのチェックボックスをダブルクリックすると表示されるフィールドのプロパティ(というのでしょうか?)のどこかが関連してると思われるのですが、どこかが分かりません・・・ どなたかお願い致します。

  • SQLインジェクションについて質問です

    よくSQLインジェクションの攻撃で、改竄されたWEBページからウイルスを仕込まれた。 等という話を耳にしますが、この攻撃でどうやって改竄するのですか? 私が知ってる範囲だと、この攻撃では入力フォームに必ず条件マッチするようなSQLを入れて 情報を取り出したり、DBの情報を書き換えたり、情報を消したりくらいしか出来ない気がするのですが・・ あと、SQLインジェクションの紹介でよく見る、ログイン画面で「' 1=1;--」みたいな入力は誰でも思いつくと思うのですが、DBの情報を書き換えたり消したりするのって そのDBのカラム名とかが分からないとできないですよね。 攻撃者はこれらを推測して行っているのですか。 それともカラム名とかを知り得る攻撃手法があるのでしょうか。 また、SQLインジェクションとは関係ないのですがXSSという攻撃手法もありますよね。 こっちはクッキー情報を盗まれるのが一番大きな被害とありますが クッキー情報を盗まれると具体的に何がまずいのでしょうか。 サーバー側でクッキーに個人の名前とかメアドとかを入れてる場合があるという事ですか?

  • フォームで入力画面→確認画面に遷移の際、特定のタグが表示されない

    初めて質問させていただきます。 PHPで簡単なフォームを作成しているのですが、 入力画面に特定のhtmlタグ(span、img)を入力した際、 確認画面に上手く情報が引き継がれず、DBにも登録されません。 -------------------------------------- 【例】 <strong>aaaaa</strong> <span style="color:#999900;">aaaaa</span> <a href="aaa.html">aaaaa</a> <img src="./aaa.jpg" alt=""> このように入力したものが確認画面では aaaaa ←太字になっている aaaaa ←単なる文字列 aaaaa ←リンクが貼られている \"aaaaa\" ←画像が表示されない というふうになり、DBにも上記のまま登録されます -------------------------------------- aタグ、strongタグでは上手くいくのですが…。 お分かりになる方いらっしゃれば、どうかご回答お願いいたします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • gooblog の「管理編集画面」への、、、、、

     gooblog の 無料版を使っています。  今回CSSを使用し、アクセス解析をしたのですが、不思議なことを発見しました。  私の「編集管理画面」へ何度もアクセスしている人がいるのです。 (1) どうやって、入るのでしょう? (2) 誰かが、なんらかの手法で不正にアクセスしているのでしょうか? (3) 「非公開記事」を覗いているのでしょうか?  ちなみに自分自身のアクセスではありません。  サイトを閉じたほうがよいでしょうか?

  • phpでDBの情報を表で表示しそれを直編集

    phpでDBの情報を表で表示しそれを直編集する方法を探しています。 編集後DB更新ありです。 PHPからMySQLのデータを表で出しました。 UIのためエクセル感覚で操作させたく ブラウザに表示された表を直接編集しDB更新をしたいのですが 方法はありますでしょうか? イメージはPHPMYADMINの管理画面でできる直接編集モードです。

    • ベストアンサー
    • PHP
  • (ACCESS)入力フォームについて

    こんにちはmynannです またまた困っているのでよかったらヒントを いただきたいと思い質問させていただきます まずテーブルが二つあり 商品マスタには管理番号(主キー)と価格の二つの項目があります。 もうひとつは販売マスタというのがあり フィールドは管理番号、販売可(チェックボックス) の二つです。 この二つはリレーションシップの関係にあります そしてこの二つを一つにした 販売可商品マスタクエリがあります 商品マスタにはすでに多くのデータがあり それ専用の入力フォームもあります 今販売マスタの入力フォームを作りたいのです どのようなものかといいますと 管理番号を入力すると価格用のテキストボックスに 自動的に入力された管理番号の価格(商品マスタから調べると思うのですが)を表示するようにしたいのです 管理番号[       ]←ここに値を入力 価格[       ]←管理番号が入力されると自動的にでる 販売可 □ ←自分でチェックする イメージはこのような感じです 更新後処理を使うということはなんとなくわかるのですが どのような処理をさせていいかわかりません 助けてください!お願いします!

  • Access2003のフォームのコンボボックスは入力が必須なのでしょうか?

    会員管理のデータベースを作っています。 新規入力画面のフォームに5つのコンボボックスがあります。 広告媒体やコース、担当者を選択するコンボです。 新規入力して、「レコードの保存」「レポートを開く」クエリを組んだボタンで 入力後に顧客名や諸情報の入ったレポートを出しているのですが コンボボックスが1つでも未選択だと、空のレポートが開いてしまいます。 未選択コンボがあっても、where条件で氏名でひぱって、氏名+入っている情報だけでレポートを出したいのですが・・・。 未選択コンボがあると、テーブルには保存できてもレポートには反映されないものなのでしょうか?

  • システムをサーバーにアップロードしても、管理画面へいけなくて困ってます。

    あるパッケージを買い、ファイルをFTPを使ってサーバーへアップし、管理画面へいきたいのですが、下記エラーが出ます。 SQLDatabase() : DB CONNECT ERROR. -> sqlite_open(estate)                              ↑                     DBネームが反映されます。(eatate) パッケージの中のsqlConf.phpのファイルをテキストで開き、 記述内容を入力するよう説明書には書いており、 そこにDBネーム、DBのID、DBのパスワードを入力するようありますが そこが間違っているのでしょうか? コンピューターのことは素人なので このようなことが難しいのかどうかも分かりません。 どうか教えて頂ければ幸いです。

  • gooブログの編集画面が表示されません。

    gooブログにログインした後、ブログ編集画面が左側のメニューしか表示されなくなりました。 そうなった原因はわかっているのですが・・・ 編集メニューのブログ情報をクリックしてブログ情報画面を出しました。そして、ブログのタイトルの所に某サイトのアクセス解析タグを入力して更新したらそうなりました。 もう一度ブログ情報画面にアクセスしてタグを削除しようとしても更新ボタンが表示されないので不可能です。 どうしたら良いのでしょうか? ちなみにブログ情報はタイトル欄のみ表示されています。

  • PHP入力フォームについて

    現在入力フォームを作っています。 流れとしてはDBに入っている会員情報をフォーム上に呼び出して(各inputにはDB内の会員の情報が表示される)各会員が自分の情報を編集できるというフォームです。 ここで質問なのですが、会員の人が自分の入力内容を変更した際に入力漏れがあるとフォーム画面に戻るのですがその際に入力した内容が表示されるのではなくDB内のデータが表示されてしまいます。 これをDB内のデータではなく入力した内容にしたいのですが、どうしたらよろしいでしょうか? ソースは下記になります。 form.php <?php DB呼び出し・・・ $_SESSION['name'] = $row['name']; ・・・ ?> <?php echo $_SESSION['err_name']; ?> <input type="text" name="name" value="<?php echo $_SESSION['name']; ?>" /> confirm.php <?php $name = htmlspecialchars($_REQUEST['name']); if(!strlen($name)) { $_SESSION['err_name'] = '氏名を入力してください。'; $errFlag = true; } else { unset($_SESSION['err_name']); } エラーの時はform.phpに戻る ?> <?php echo $name; ?> としています。 とても省略していますが、お分かりの方がいらっしゃいましたら教えていただけると助かります。

    • 締切済み
    • PHP