[XSS]の検索結果


PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。

mailmform.phpを実行すると入力フォームが表示され。送信ボタンを押す(クリック)すると入力した内容がメール送信されます。

<?php
//------------------------------------------------------------------------------
//    mailform.php - sample mailform php script
//------------------------------------------------------------------------------

mb_language("Japanese");
mb_internal_encoding("UTF-8");

define("MAILTO", "support@59bbs.org");

$proc = isset($_POST['proc']) ? $_POST['proc'] : '';
//echo $proc; // for debug
if ($proc == 'send') {
    _send();
}
else {
    _input();
}

// 初期表示
function _input() {
    $formdata = array();
    $formdata['subject'] = '';
    $formdata['name'] = '';
    $formdata['from'] = '';
    $formdata['body'] = '';
    _input_form($formdata, '');
}

// 入力フォーム表示
function _input_form($formdata, $message) {

    // XSS対策
    $formdata['subject'] = htmlspecialchars($formdata['subject'], ENT_QUOTES);
    $formdata['name'] = htmlspecialchars($formdata['name'], ENT_QUOTES);
    $formdata['from'] = htmlspecialchars($formdata['from'], ENT_QUOTES);
    $formdata['body'] = htmlspecialchars($formdata['body'], ENT_QUOTES);

echo <<<EOF
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプルメールフォーム</title>
</head>
<body>
<h2>サンプルメールフォーム</h2>
<p>$message</p>
<form action="mailform.php" method="post">
<input type="hidden" name="proc" value="send">
件名:<br />
<input type="text" name="subject" size="50" value="${formdata['subject']}" /><br />
名前:<br />
<input type="text" name="name" size="50" value="${formdata['name']}" /><br />
メールアドレス:<br />
<input type="text" name="from" size="50" value="${formdata['from']}" /><br />
本文:<br />
<textarea name="body" cols="50" rows="10">${formdata['body']}</textarea><br />
<br />
<input type="submit" value="送信" />
</form>
</body>
</html>
EOF;

    exit();
}

// メール送信
function _send() {

    // パラメータ取得
    $formdata = array();
    $formdata['subject'] = isset($_POST['subject']) ? $_POST['subject'] : '';
    $formdata['name'] = isset($_POST['name']) ? $_POST['name'] : '';
    $formdata['from'] = isset($_POST['from']) ? $_POST['from'] : '';
    $formdata['body'] = isset($_POST['body']) ? $_POST['body'] : '';

    // 入力チェック
    if ($formdata['subject'] == '') {
        _input_form($formdata, '件名を入力してください');
    }
    if ($formdata['name'] == '') {
        _input_form($formdata, '名前を入力してください');
    }
    if ($formdata['from'] == '') {
        _input_form($formdata, 'メールアドレスを入力してください');
    }
    else {
        if (!preg_match('/^[-+\\w]+(\\.[-+\\w]+)*@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]{2,6}$/i', $formdata['from'])) {
            _input_form($formdata, '正しいメールアドレスを入力してください');
        }
    }
    if ($formdata['body'] == '') {
        _input_form($formdata, '本文を入力してください');
    }

    // 送信
    $header = "From: " . mb_encode_mimeheader($formdata['name']) . ' <' . $formdata['from'. '>';
    $result = mb_send_mail(MAILTO$formdata['subject'], $formdata['body'], $header);
    if ($result{
        _input_form($formdata'メールを送信しました');
    }
    else {
        _input_form($formdata'メール送信に失敗しました');
    }
}

?>
[3147] Posted by kagahiro at 2012/06/13 16:38:29
1 point | Link (7) | Trackback (0) | Comment (1)


自分では対応したつもりのXSS脆弱性でしたが、まだまだ残っているという指摘を受けたので再度見直して修正しました。使用する場合は最新版での使用をお願いします。

メールフォームCGI
Q&A CGI
ブックマークCGI
59Tracker
59bbs

なお、SourceForge.JPに置いてある「59Tracker」「59bbs」のパッケージはまだ最新版になっていない(明日までには更新する予定)ので、上記のページからダウンロードしてください。
[1877] Posted by kagahiro at 2010/05/25 13:11:29
0 point | Link (1) | Trackback (0) | Comment (0)


先日公開したQ&A CGI、ブックマークCGIにXSS(クロスサイトスクリプティング)の脆弱性があることが判明しました。

Q&A CGI、ブックマークCGIの書庫ファイルを修正版に差し替えましたので、利用する場合は最新版をダウンロードして下さい。
[1868] Posted by kagahiro at 2010/05/21 00:43:34
0 point | Link (2) | Trackback (0) | Comment (0)

[249] Posted by aaa at 2008/03/13 19:12:33
0 point | Link (1) | Trackback (0) | Comment (0)

  1  


アクセスランキング

今日のアクセスランキング(上位10件)

  1. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (53 PV)
  2. find.2ch.netで2ちゃんねる掲示板の検索ができない (6 PV)
  3. 「あきたタニタ食堂」が閉店、開店当初は話題となったが秋田市民には「味が薄い」と不評だった (5 PV)
  4. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (5 PV)
  5. 明治がスーパーカップを50個食べて応募すると、50名に10万円が当たるキャンペーンを開始 (4 PV)
  6. 三菱自動車燃費不正、「三菱グループの天皇」呼ばれた相川賢太郎氏「燃費なんて誰も気にしていない」 (4 PV)
  7. ホッシュジエンの国内ニュース解説 (4 PV)
  8. 便利で簡単! 検索リンク (4 PV)
  9. 「ゆとり教育」から脱却、教科書のページ数を倍増 (4 PV)
  10. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (4 PV)

今月のアクセスランキング(上位10件)

  1. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (53 PV)
  2. find.2ch.netで2ちゃんねる掲示板の検索ができない (6 PV)
  3. 「あきたタニタ食堂」が閉店、開店当初は話題となったが秋田市民には「味が薄い」と不評だった (5 PV)
  4. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (5 PV)
  5. 明治がスーパーカップを50個食べて応募すると、50名に10万円が当たるキャンペーンを開始 (4 PV)
  6. 三菱自動車燃費不正、「三菱グループの天皇」呼ばれた相川賢太郎氏「燃費なんて誰も気にしていない」 (4 PV)
  7. ホッシュジエンの国内ニュース解説 (4 PV)
  8. 便利で簡単! 検索リンク (4 PV)
  9. 「ゆとり教育」から脱却、教科書のページ数を倍増 (4 PV)
  10. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (4 PV)

アクセス統計

ディレクトリ

関連サイト