

htmlspecialchars — 特殊文字を HTML エンティティに変換する
ができていない トラブル だと思います。
以下 掲示板 のプログラムです。
keizi_top.php トップ画面 と keizi.php とで
関連する ファイルは 他にも あるのですが ここで
関連している 2個ファイルのみ記載しました。
2個ファイルのみでで 結果が 同じでしたので 2個ファイル
バク だと 考られます。
さて
以下の 最初のファイルである keizi_top.php の中に
/*** スレッド名の変数$su_dにデータがあればtbj0に挿入 ***/
$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
ありますが 同ファイルの
<input type="text" name="su" size="50">
の書き込み BOX に 特殊文字 である < > & 三種類
試しに 送信しました
結果 以下です。
42 <
2022-04-05 00:35:02作成
43 >
2022-04-05 00:35:09作成
45 &
2022-04-05 00:35:30作成
以上ですが htmlspecialchars が 機能していれば
< は <
> は >
& は &
に 変換 されるところですが 変換 されずに
そのまま 出てきます。 これだと 攻撃の対象となります。
もしよろしければ MAMP を 使用していますので
試しに 試験 していただけましたら 助かります。
私の MAMP などに 問題 がある可能性も でてきます。
とりあえず
以下の プログラムで なにか バグが ありますか?
よろしくお願いいたします。
ファイル名 keizi_top.php
<?php
/*** データベース情報等の読み込み ***/
require_once("data/db_info.php");
/*** データベースへ接続、データベース選択 ***/
$s=new pdo("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);
/*** タイトル、画像等の表示 ***/
print <<<eot1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SQLカフェのページ</title>
</head>
<body style="background-color:silver">
<img src="pic/jk.gif" alt="女子のイラスト">
<span style="color:purple;font-size:35pt">
SQLカフェ掲示板だよ
</span>
<p>見たいスレッドの番号をクリックしてください</p>
<hr>
<div style="font-size:20pt">(スレッド一覧)</div>
eot1;
/*** クライアントIPアドレス取得 ***/
$ip=getenv("REMOTE_ADDR");
/*** スレッド名の変数$su_dにデータがあればtbj0に挿入 ***/
$su_d=isset($_GET["su"])? htmlspecialchars($_GET["su"]):null;
if($su_d<>""){
$s->query("INSERT INTO tbj0 (sure,niti,aipi) VALUES ('$su_d',now(),'$ip')");
}
$re=$s->query("SELECT * FROM tbj0");
while($kekka=$re->fetch()){
print <<<eot2
<a href="keizi.php?gu=$kekka[0]">$kekka[0] $kekka[1]</a>
<br>
$kekka[2]作成<br><br>
eot2;
}
/*** スレッド作成フォーム、検索ページへのリンク ***/
print <<<eot3
<hr>
<div style="font-size:20pt">(スレッド作成)</div>
新しくスレッドを作るときは、ここでどうぞ!
<br>
<form method="GET" action="keizi_top.php">
新しく作るスレッドのタイトル
<input type="text" name="su" size="50">
<div><input type="submit" value="作成"></div>
</form>
<hr>
<span style="font-size:20pt">(メッセージ検索)</span>
<a href="keizi_search.php">検索するときはここをクリック</a>
<hr>
</body>
</html>
eot3;
?>
No.1ベストアンサー
- 回答日時:
よく質問文を読んでいませんが、ブラウザの画面にそう表示されるという話だったら、例えば次のHTMLをブラウザで表示して見たら何が起こっているか気づくでしょう。
ーーーここから
<html>
<body>
<&>
</body>
</html>
ーーーここまで
ありがとうございました。
例えば次のHTMLをブラウザで表示して見たら何が起こっている
とりあえずブラウザのソース表示 しました。
<a href="keizi.php?gu=<">42 <
<a href="keizi.php?gu=>">43 >
<a href="keizi.php?gu=&">45 &</a>
しかし >>>>>>>>>>>>> ですが 13個 入力したところ
<a href="keizi.php?gu=>>>>>>>&g">3 >>>>>>>&g</a>
最後が & は & に 変換されていますね!
htmlspecialchars — 特殊文字を HTML エンティティには
機能しているみたいです。
文字数が 少なかった のが 原因 だと思います。
さすがに攻撃している側も 1文字では 攻撃できないので
これでいいのかと思われます。
いろいろ試していたら スレッド 行数が 100行ぐらいなりました
ので mysql テーブル のデータ を 削除クエリで
1度削除しましたので スレッドの 先頭につく数字が 順不同
となりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パーミッションの考え方。
-
Xamppでindex.phpだけしか表示...
-
PHPを使ってのサーバ上ファイル...
-
ウィルスバスターを入れたら共...
-
Linuxでphpファイルが認識されない
-
【file_exists】ファイルが存在...
-
[PHP] 標準の関数について
-
sqlite_open、SQLite3::open
-
htdocsフォルダ以外ではPHP...
-
smartyのdifineについて
-
コマンドプロンプト エラー
-
kimonoで取得したjsonファイル...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
バッチを用いたフォルダの自動移動
-
フォントの色を変えるには?
-
PHPにて外部サイト内容が取得不...
-
shift-jisでfgetcsv
-
リンク先を隠す方法はないでし...
-
【PHP】サーバー上で TIFFをJPE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
.phpファイルが、表示されない
-
【file_exists】ファイルが存在...
-
URLが.PHPってどういう...
-
PHPを使ってのサーバ上ファイル...
-
EUC_JP と EUC-JP
-
htdocsフォルダ以外ではPHP...
-
さくらレンタルサーバーでPHPが...
-
htmlspecialcharsが機能してい...
-
CakePHPの .htaccess設定について
-
PHPでフォルダ選択ダイアログを...
-
PHPの戻り値をWINDOWSバッチフ...
-
phpのファイル制御関数について...
-
サーバ無しでphpを動作させる
-
別のドメインのファイルをrequire
-
サイトのphpソースコードを表示...
-
sendmailのパス指定方法
-
apacheで拡張子を省略してアク...
-
クラスが使えない。
-
session_start()でwarningが表...
おすすめ情報
どうもすみません。
文字数制限で 2個目の keizi.php プログラムは 以下
URL から ご覧になれます。 よろしくお願いいたします。
http://afurieitohannei.la.coocan.jp/sns/keizi.htm