HTMLの許可方法とセキュリティについて

このQ&Aのポイント
  • 質問文章では、HTMLの許可方法とセキュリティについての質問がありました。簡単な掲示板を作成しており、一部のHTMLタグの許可方法を知りたいとのことです。
  • 質問1では、質問者が考えたHTMLタグを無効化してから許可したいタグにマッチする文字だけをHTMLにする方法についてのセキュリティについての疑問があります。
  • 質問2では、10個程度のタグを置き換える負荷についての問題があります。投稿されるメッセージの最大長は2000文字程度です。
回答を見る
  • ベストアンサー

HTMLの許可

プログラム初心者です 簡単な掲示板を作りました 一部のHTMLのタグを許可する方法を教えてください 素人なりに考えたのですが、一回タグをすべて無効化して&lt;code&gt;にしてから許可したいタグにマッチした文字だけをHTMLにすればどうかなと思ったんです 質問1 これで、セキュリティ的に安全ですか? 質問2 10個くらいのタグを置き換えると負荷は重そうですか?メッセは最大2000文字程度です <?PHP $mes//投稿されたメッセ(タグは除去済み) $pattern="/&lt;code&gt;/"; $replacement="<code>"; preg_replace($pattern,$replacement,$mes); $pattern="/&lt;/code&gt;/"; $replacement="</code>"; preg_replace($pattern,$replacement,$mes); ?> 許可したいタグは、b、code、tableなどのタグなどです 質問3 もっと他にいい方法があればお願いします よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

回答1 style属性やonclick属性なんかでわりと何でも出来てしまうので、完全に安全とは言い難いです。 回答2 全然大したこと無いです。常識的な範囲の処理でかつネットワークアクセスを介さない処理は「一瞬」です。前の件の正規表現も一見すごく重そうに見えましたが一瞬でしたね。 解決策としては、Markdown記法の採用が最適でしょうか。パーサーはたくさんあるようなので、お好きな物を選んでください。 https://www.google.co.jp/search?q=markdown+php

flash0
質問者

お礼

回答ありがとございます onclick属性がつけれました。全然ダメでしたorz

関連するQ&A

  • 置換え

    プログラム初心者です 文字を参照でつかおうとおもったんですがつかえませんでした $row_cntは投稿したレス番号です レス番号と引用した数字が同じ場合は置換えないようにしようとおもいました $noに入っている文字がなにか確認したら参照した数字ではなくて文字の$1になってました。 どうやったら参照した数字を変数にいれられるでしょうか? $pattern="/&gt;&gt;(\d+)/"; $no= "$1"; if($row_cnt!=$no){ $replacement="<a href=\"bbs.php?no=$1\">$0</a>"; $str=preg_replace($pattern,$replacement,$mes); } よろしくおねがいします

    • ベストアンサー
    • PHP
  • 画像の置換え

    プログラム初心者です 番号と画像拡張子を簡単な正規表現で表す方法をおしえてください 拡張子はgif、png、jpgの拡張子です 番号は桁数も番号も変わります。この三パターンにマッチするテキストを置き換えたいです 例 56.gif 100.gif 6.png 6549.png 79169.jpg 35.jpg $pattern="/(\d+)/"; $replacement="<a href=\"$0\">$0</a>"; if(preg_match($pattern,$mes,$matches) ){ $mes=preg_replace($pattern,$replacement,$mes); } よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPのpreg_replaceについて

    文字列に半角、全角があったら''に置換したいです。 例)あ あ あ -> あああ 上記のように。 ソースは下記のとおりしてみたのですがうまく表示されませんでした。 $string = 'あ あ あ'; $pattern = '[ \t\n\r\f]'; $replacement = ''; $var_dump(preg_replace($pattern,$replacement, $string)); 他には $string = 'あ あ あ'; $pattern = '[[:space:]]'; $replacement = ''; $var_dump(preg_replace($pattern,$replacement, $string)); などと行ってみました。 ご教授お願いいたします。

    • 締切済み
    • PHP
  • htmlタグを削除させて表示させたい

    特定の変数内にある、htmlタグを削除させて表示させたいのですが、reg_replace()を使うのが妥当でしょうか? その際、<br>や<img ="http=~">といった< >内が変化する文字を指定するのがわからなくて困っています。 <?php $string = 'こんにちは、<br>皆さん.'; $pattern = '/<br>/'; $replacement = ''; echo preg_replace($pattern, $replacement, $string); ?> この</br/>の部分を</*/>としてみましたが見当違いのようで"皆さん"の部分がすっぽ抜けてしまいました。 もしご存知の方おられましたら、どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • preg_replace()でマッチ文字列に関数を

    PHPでのpreg_replace()でマッチした文字列に関数を適用したいのですが、上手くいきません。 $str = "hogeHoge"; $pattern = '/(h.ge)/i'; $replacement = strtoupper("$1"); echo preg_replace($pattern, $replacement, $str); // 期待する結果 : HOGEHOGE // 実行した結果 : hogeHoge 根本的に間違っているかもしれませんが、ご指南いただければ幸いです。

    • ベストアンサー
    • PHP
  • gooブログのHTML編集で文字化けする!

    HTMLを編集して保存すると、<>が&gt;&lt;(実体参照というものでしょうか?)に変わってしまいます。 プレビューではタグの内容が正常に表示されているのに、一度保存するとタグとして認識してくれなくなり、「普通のテキスト」としてHTMLコードがブログにそのまま表示されてしまいます。 どうしてこうなるんでしょうか?

  • ヒットする初回のみ置換する方法

    あいうえおかきくけこあいうえおあいうえお という文字列があった時、 初回の「あいうえお」のみ空に置換して かきくけこあいうえおあいうえお としたいのですが、str_replace()だと全部置換されてしまいますし、 preg_replace()やmb_ereg_replace()ではうまく置換されません。 対象とする文字列は、実際はHTMLタグやマルチバイトが混じっています。 置換するべき文字列は、全く同様のものが対象文字列内にも必ず含まれています。 preg_replace()やmb_ereg_replace()でも可能なのかもしれませんが、 どうやればいいのか分かりませんでした。 どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • ▲▲HTMLで特殊記号を入力する際にへんになる??▲▲

    こんばんは☆ HTMLで特殊記号を表示させる場合、例えば☆ < →&lt; 又は < > →&gt; 又は > とあるのはわかっているのですが、もしこのようなタグの中に組み込む場合どのように記入すればよいでしょうか?? -----例----- &title02=<font color="#000000">基本タグ</font>& &data02=例HTML& ------------ ↑これはフラッシュを設定するtxtに書かれているものです。すでに&が入っているためか・・・。 ↓のように入力すると -----例----- &title02=<font color="#000000">基本タグ</font>& &data02=例&lt;HTML&gt;& ------------ 基本タグ 例 ------------ ↑このように表示されてしまいます・・・。 本当は↓ ------------ 基本タグ 例<HTML> ------------ ↑このように表示させたいのです。。。。 わかる方、教えてください♪ よろしくお願いします♪

    • ベストアンサー
    • HTML
  • 文字列内にある「指定した空タグ」だけを削除したい

    文字列内にある「指定した空タグ」だけを削除するにはどうすれば良いでしょうか? ※HTMLタグはエスケープしていない状態で、変数として保持しています ■現状 <p>str_replaceでいけると思ったけど</p> <p></p> <p>preg_replace?</p> <p></p> ■希望 <p>str_replaceでいけると思ったけど</p> <p>preg_replace?</p>

    • ベストアンサー
    • PHP
  • 正規表現でHTMLタグの属性まで選んで抽出

    現在、掲示板をPHPで作っています。 入力された文字列の無効化と許可タグの分別に正規表現を使いたいと考えております。 そこで、現状では、まずすべての < > を特殊文字に変換し、その後に、許可タグ(属性)のタグを < > にもどそうとしています。 たとえば、fontタグならcolorとsizeを許可しようとして、次のような正規表現を作ってみましたが、うまくいきません。 /&lt;font((( )*(color=)[\"\']?.{1,7}[\"\']?)|(( )*(size=)[\"\']?.{1,2}[\"\']?))*&gt;/i 正規表現はまだ勉強し始めたところで、おかしなところだらけだと思いますが、何かヒントだけでもいただけたらと思います。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう