• 締切済み

文字コードエスケープ処理について

現在MYSQLとPHPを使ってデータベースを構築してます。 XSSやSQLインジェクションはフォームなどに悪意のユーザがJavascriptのコードを入力するんですよね? ちょっとテストで検索フォームに Javascriptコード を入力してみたんですが何も起こりませんでした。これは処理がされていると思って良いんでしょうか?URLは画像のようになりました。

noname#184267
noname#184267
  • PHP
  • 回答数3
  • ありがとう数4

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

>> XSSやSQLインジェクションはフォームなどに悪意のユーザが >> Javascriptのコードを入力するんですよね? Javascriptコードの入力はXSSの一つにすぎません。 特にSQLインジェクションでは、dbデータの不正取得や改竄、 フィッシングサイトへの誘導、シェルコマンドの不正実行、 他サイトへのDoS攻撃用の踏み台化など、javascriptなどを 利用しないアタックが主流です。

  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.2

質問の意図が、 「クロスサイトスクリプティング対策がなされているかどうかのテストとして、入力フィールドに、scriptタグでJavaScriptコードを書くテストをすればそれで十分か?」 ということであれば、「不十分」というのが答えです。 どういうテストをすべきかはこれだけの情報では何とも。

noname#184267
質問者

お礼

お返事ありがとうございました。 難しいですね;;

  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

URLが上記の様になるのはフォームからresult.phpに データをGETで渡しているだけなので処理はされていないと思います。 ※くれぐれもこういう事はローカル環境でやってくださいね。

noname#184267
質問者

お礼

ありがとうございます >>※くれぐれもこういう事はローカル環境でやってくださいね。 当然ローカル環境です

関連するQ&A

  • XSS、CSRF、SQLインジェクションについて

    XSS、CSRF、SQLインジェクションをそれぞれ簡単に説明すると、 XSS・・・動的なWebサイトにおける入力フォームの脆弱性 CSRF・・・ユーザーになりすましてWebサーバーにリクエストすること SQLインジェクション・・・アプリケーションが実行するSQL文に変なものを注入して、意図しない 動作をさせる攻撃のこと で正しいですか?

  • 文字によって文字コードが違ってしまいます。

    PHP4.3.9で、テキストボックスにひらがなを入力してもらい、 その文字列を元にSQL文を発行して結果を表示するシステムを構築しております。 (JavaScriptを用いて簡易キーボードを作成し、ひらがなしか入力できないようにしてあります。) ユーザに入力してもらった、ひらがなをPHPで受け取った際、 特定の文字ではUTF-8として扱いSQL文が発行されるのですが、 別の文字ではASCIIとして認識してしまいます。 全てのひらがなをUTF-8として扱わせるにはどのような設定が必要なのでしょうか? ちなみに、.php、.inc、.jsは全てUNICODEで作成しております。

    • 締切済み
    • PHP
  • htmlタグを含んだ文字のデータベースへの読み書き

    PHPで、「htmlタグを含んだ文字」を、 データベースへ読み書きする安全な方法を教えて下さい。 リンクタグや、フォントタグなどは、 そのまま使用できるようにしたいです。 ■追加する時 htmlフォームからデータベースに保存(SQLインジェクション) ■編集する時 データベースからデータを読み出す(htmlエスケープ) htmlフォームで再編集し、データベースに保存(SQLインジェクション) こういう作業になるかと思いますが、 どのように処理したら、htmlタグを使いつつ、 安全に更新ができるでしょうか? 教えてくださいm(_ _)m

    • ベストアンサー
    • MySQL
  • MySQLにデータを入れる際、エンコードしたほうが...

    PHPとMySQLを組み合わせて掲示板を作成しているのですが、SQLインジェクションの心配や、検索を簡単にするためDBに入力する際、すべてのデータをPHP側でエンコードし入力し、表示するときのみでコードするやり方はPHP的にもMySQL的にもどうなのでしょうか? 自分的には多少データ量は増えるものの、英数字や=などの記号のみを入力するだけなので、比較的検索は簡単になると思います。また、SQLインジェクションなども記号が変換されるため防ぐことができると考えています。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • データベースの中にあるソースコードを実行させたい

    こんにちは。php初心者です。 データベースの中にphpコードを保存して、それをphpで呼び出して中のソースを実行させたいのですがphpコードがそのまま表示されてしまいます。何か良い方法はありますでしょうか? ●データベースの中身 [ID] 0 [contents] $test="テスト"; ●ソース <?php $db = mysql_connect('localhost','root'); mysql_select_db('hoge',$db); $id = mysql_escape_string(0); $sql = "select * from contents where ID = '$id';"; $contents = mysql_query($sql,$db); mb_http_output ( 'UTF-8' ); $aryCol=mysql_fetch_assoc($contents); $a = $aryCol['contents']; echo $a; echo $test; ?> ●実行結果 $test="テスト"; ●開発環境 Apache2.0.59 PHP4.3.2 MySQL4.0.26 と、いうような感じです。実行結果は「テスト」という文字のみ表示させたいのですが、$aに入っているソースコードがそのまま表示されてしまい、$testには何も入っていないままです。 このような処理は不可能なのでしょうか?またデータベースに入っているソースコードの処理を行いたい場合、どのような処理をすればよろしいでしょうか? 私では経験不足なため皆様のお知恵を拝借できればと思い質問させていただきました。くだらない質問で大変恐縮ですがご回答のほうよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのSQLインジェクションはsprintf?

    PHPのSQLインジェクションですが、sprintf内でクォートをしてあるとそれで大丈夫なのでしょうか? 以下のようなコードがあり、nameは画面入力なのでSQLインジェクションが起こるのでは? と作成者に確認したところ、"%s"してあるから大丈夫との返事をもらいました。 ネット調べるとmysql_real_escape_stringでエスケープしてから"%s"で変換すれば大丈夫といった内容は見つけたのですが、mysql_real_escape_stringなど不要との返事をもらいました。 なぜ?と聞くとそういうものだとしか回答がありません。 sprintf('UPDATE users SET name = "%s" WHERE id = %d', name, id); 結局上記のコードでSQLインジェクションは解消されているのでしょうか?

    • ベストアンサー
    • PHP
  • htmlspecialcharsを使ったエスケープ処理

    APIを使ってPHPでWEBサイトを構築しているのですが htmlspecialcharsを使ったエスケープ処理はいつ行うべきなのでしょうか? フォームから入力された値だけでよいのでしょうか?? いまいち理解していないのでアドバイスお願いします。

    • ベストアンサー
    • PHP
  • mysql_real_escape_stringについて\r\nが付くのは?

    $sql = INSERT INTO users (logid, passwd) VALUES ( "'" . mysql_real_escape_string($_POST['id']) "','" . mysql_real_escape_string($_POST['pas']) . "';" とすると全POSTデータの先頭に「\r\n」が付与されてしまいます。 INSERT INTO users (iogid, passwd) VALUES ('\r\n 入力されたID', '\r\n 入力されたパス') こんな感じになってしまいます。 SQL実行時にデータベースに入ってしまっているのか、 phpMyAdminで確認すると、文章内に改行が入ってしまっているみたいで、表のレイアウトがガタガタになっています。 SQLインジェクション対策に必要だと参考書には表記されているのですが、あまりにデータベースが見にくいので、私の使い方が間違っている様な気がします。 (1)\r\nが先頭に付与されるのは正しいのでしょうか? (2)データベースにSQLで\r\nをINSERTしると、データも\r\nが入ってしまうのでしょうか? (3)PHP + MySQLでSQLインジェクション関数はmysql_real_escape_stringだけなのでしょうか? なにぶん超初心者なので、ご教授の程よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mySQLのデータベースにhtmlのコードをそのまま保存することはできますか?

    mySQLのデータベースにhtmlのコードを保存させて、ブログのように管理したいと考えています。けれど、微妙に元のコードが変形してしまって困っています。 フォームを作って、そこに <p style="font-size:18pt;">aiueo</p> このように入力して、そのまんまの形でデータベースに保存させたいのですが、 <p style=\"font-size:18pt;\">aiueo</p> このようにクォーテーションマークの前にバックスラッシュが挿入されてしまいます。 これが原因で、CSSなどが機能せず困っています。誰か分かる方いますでしょうか?ブログなどはどうやっているのでしょうか? 助けてください。ヒントになるソースなどでも教えていただけると助かります。 作業環境は、 データベース mySQL サーバー言語 php, ZendFramework それから、フォームの送信時にjavascript(jQuery Form)を媒介させて入力チェックなどを行っています。 windowsXP

  • PHPを使って文字列から改行コードを取り除く方法

    PHP初心者ですが、宜しくお願いします。(簡単なことなのかもしれませんが、なかなかうまくいかないので質問させていただきました。) 環境PHP5.2.4 MYSQL14.12DISTRIB5.0.4 WINXP IE6.0 状況 HTMLフォームを作成し、テキストエリアからPOST送信し、 PHPを使って、MYSQLのtest_tテーブルにデーターをいれました。 入力データーに改行があるとき例えば 1エンター2エンター3エンター とした場合、下のように3行になります。 mysql> select * from test_t; +-----------+ | tekisuto | +-----------+ | 1 2 3 | +-----------+ 1 rows in set (0.00 sec) ★質問 改行コードをPHPで処理して、MYSQLに一行 123と連続で入力(空白とかいらない)ようにしたいのですが、どうしたらいいのでしょうか? HTMLからのデータの取得は以下のようにしています。 $tekisuto=$_POST["tekisuto"];

    • ベストアンサー
    • PHP