• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:閲覧者さんが作ったコンテンツを自動で適応)

閲覧者さんが作ったコンテンツを自動で適応されるサイトの作り方は?

H240S18B73の回答

回答No.3

JSやCSSをユーザー入力やデータベースの値を利用して PHPによって出力することは可能です PHPでJSやCSSのコードを出力してscriptのsrcや linkのhrefとして利用することもできます なんならPHPは画像だって出力できます また、ユーザーにcookieをもたせておくなどすることで それをブラウザ毎に記憶しておくということもできます しかしユーザー入力を直接的に利用してJSを出力することは それ自体XSS脆弱性なのでやるべきことではありません というかやってはいけません ユーザー入力を利用したJSの出力を行う場合の ユーザー入力の無害化には高度な知識を要すると思います 上級者を自称できるレベルでないならやらないほうが無難です ユーザー入力を受けてあれこれするというものを作りたいときは 少なくともXSS・CSRF・ディレクトリトラサーバル といった攻撃についての知識は最低限持ち合わせるべきです

okweb12345
質問者

お礼

>>> それをevalでやってなければまだ大丈夫と思います evalでやってたとしても入力値をparseIntなどして 数値しか受け付けないようしているなら大丈夫です 出力時も同じく、parseIntなどして数値しか 出力されないようにしてれば大丈夫です 攻撃者はこの挙動を利用して,ユーザーを http://example.jp/search?q=<script>alert(1)</script> などに誘導することで,ユーザーのブラウザ上でJavaScriptを実行させることができます。 結論としては、PHPが絡まないJSのみなら、すべて入力できてもまずだいじょうぶなので公開しても大丈夫だが、 念のため記載する可能性のある物以外はjsが無視するようにしておいた方が良いという事でしょうか? よって下記と数値以外はエスケープしたいのですが、具体的にこの関数を、inputのvalueを取得する前に記載しておくと良いと教えていただければ幸いです。 このページに情報があるでも構いません。 >>> Inputの中に入れた数値をjsで計算し結果をinnerhtmlで表記するようにしている部分は、%¥\&最低限の物だけエスケープしてから公表したほうがいいでしょうか? あまり情報が出てこないのですが%¥\&をエスケープする関数を子の処理より前に実行すれば安全なのでしょうか?

okweb12345
質問者

補足

このサイトもそうですよね このコメントも自動的に表記されます ここに危険なソースを書いてボタンを押すと対策していないと個人情報がデータベースから抜かれたりするということでしょうか?

関連するQ&A

  • PHPファイルの閲覧について

    Webサイトを保存するときに、Firefoxのアドオンscrapbookを使っています。 wordpressの勉強のためにPHPファイルもダウンロードしたいのですが、 画像と.html .js .cssのファイルしかダウンロードできません。 どうすればPHPファイルを閲覧(出来れば保存)できるのでしょうか。

  • 投稿されたコンテンツをページの情報として表記する

    このサイトや投稿サイトのように投稿されたコンテンツをページの情報として表記するためにはphpなどサーバサイドの言語でHTMLを生成するしかないのでしょうか? できればJSで行いたかったのですが、その場合Nodejsをサーバサイドの言語として選択してphpなどは使わないしかないでしょうか?

  • 携帯電話でのフラッシュコンテンツの閲覧

    最近、携帯電話(au)のPCサイトビューアを使ってPCサイトを閲覧することが多いのですが、見たいPCサイト(例えば日産やトヨタなど自動車関係のサイトなど)の画像部分にフラッシュコンテンツが含まれていて、画像部分を中心に閲覧することができません。 そこで疑問なのですが、今の各社の携帯電話のPCサイトブラウザの技術や携帯機種のスペックでは、フラッシュコンテンツが含まれるPC向けサイトをきちんと閲覧するのは無理なのでしょうか? また、ドコモのスマートフォン系の機種でも閲覧は難しいものでしょうか? この辺の事情にくわしい方や、スマートフォンを現在使っている方にお答えいただけると助かります。

  • サイト内での自動計算するには

    かなり初歩の質問で申し訳ないのですが、 ウェブサイトの特定の箇所の数字を自動的に計算して他の場所に算出するにはどのような方法がいいでしょうか。phpでしょうか、jsでしょうか。 例としては、 <p class="a">30</p> <p class="b">90</p> .aに入れられた数字に対して、.bは掛ける3をして自動的に算出するというような簡単な計算です。 これを静的ページは無理として、どの部分にシステム(js)を入れてどのような式をかけばよろしいのでしょうか。

  • IE7(タブブラウザ)でのサイト閲覧について

    先日OSの再インストールをしまして、そしてIE7をインストールしてWebサイトを閲覧していたときのことです。 あるサイトを閲覧した時に、左にメニュー、右にコンテンツといったページがあったのですが、コンテンツの部分がメニューの下に表示されて、レイアウトが崩れて表示されてしまいます。おそらくレイアウトはCSSでなされているサイトだと思うのですが、どう対処すればいいかわかりません。よろしくおねがいします。

  • サイトコンテンツについて

    いつもお世話になっております。 現在、友人とファッションに関連したサイトを作成する予定でして、 サイトにはお気に入りのお店などの紹介ページやブログも作るつもりです。 作るからには色々な方に何度も訪れて欲しいのですが、トップページに載せる コンテンツに関していいアイデアが浮かびません。 そこで質問というよりも意見をお伺いしたいのですが、 皆さんが思うコンテンツ、こんなのがあれば何回も訪れたいと思うものは何ですか? 個人で運営するので毎日何か情報を載せたりするのは無理がありそうなので(それぐらいやれと突っ込まれそうですが・・(^_^;)、 できれば一度作ればOKみたいなものがいいのです。 (※プログラム(PHP,CGI etc)は多少組むことができます。)

    • ベストアンサー
    • HTML
  • CMS

    HTML,CSS,JS,PHPはcms(コンテンツマネジメントシステム)の内に入りますか?

    • ベストアンサー
    • CSS
  • 「~.css?数字」というファイル名のご解説を!

    こんばんは。 現在CSSを学んでいるものです。下記のサイトのソースをご覧下さい。 http://lagoscript.org/jquery/flickable/demo 「screen.css?1252422308」や「print.css?1250502448」、また、「jquery-1.4.2.min.js?1273939646」や「view_source.js?1257599809」の様なファイル名が見受けられます。 参考のためにサンプルをコピーして動かして、それを少しずつ変えていこうと考えていたのですが、「screen.css」、「print.css」や「jquery-1.4.2.min.js」などファイル名には「?」は付けられません。そのせいかファイル名がどうしても付けられないせいか分かりませんが、ローカルにコピーしても動きません。 これがどう検索しても分かりませんでした。サイト主様にコメントを書こうとも考えましたが、コメント欄を見ると最近はご覧頂けていないようでした。ですので、こちらで質問させて頂きました。 みなさま、これはどの様なことなのかご説明、よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • PHPで、ブログのRSSを自動生成したい

    自分のブログのRSSを自動的に生成させたいと思っていますが、具体的にどうすればよいのかわかりません。 PHPを使って、RSSを自動生成させるためのやり方や、ソースや情報が載っている参考サイト、本などをご存知ありませんか? ソースだけではなく、そのソースをどういうファイルでどこにUPして、というところまで知りたいのですが… 「RSS」と「RSS autodiscovery」に対応させて、GREE等の新着に載るようにさせたいのです。 因みに、ブログはFREEのPHPスクリプトを自分で改造して、 自分で借りているサーバで運営しています。

    • 締切済み
    • PHP
  • file_get_contents()にて文字化け

    PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m

    • 締切済み
    • PHP