問題タブ [htmlspecialchars]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
885 参照

php - symfony は HTML 出力をどのように自動クリーニングしますか?

htmlspecialchars() を使用する必要があることはわかっていますが、echo ステートメントを使用すると出力が自動的に消去されます。手動で、symfony なしで、どうすればそれを行うことができますか? エコーステートメントをオーバーライドしますか? ob_start() 、 ob_get_contents() などがあることは知っていますが、出力全体を消去します

0 投票する
3 に答える
401 参照

php - PHPコードはサイトの通常の読み込みを停止します

ウェブサイト/ファイルのHTMLソースを取得し、そのコンテンツの一部を置き換えるためのこのコードがあります。後で変更した結果を印刷します

このコードはファイルにあります、私はこのコードを使用して含めます<?php include('newfile.php'); ?>

何らかの理由で、そのファイルを含めた後の他のファイルは、<?php include('somefile.php'); ?>またはのように機能しません<?php get_footer(); ?>

どんな助けでも大歓迎です私の英語でごめんなさい

ダニエル


私はこれを手に入れました:注意:未定義の変数:/usr/local/pem/vhosts/135377/webspace/httpdocs/folder/wp-content/themes/one/index.phpの47行目のdo_not_duplicate警告:in_array():間違ったデータ型47行目の/usr/local/pem/vhosts/135377/webspace/httpdocs/folder/wp-content/themes/one/index.phpの2番目の引数

エラーメッセージは以前に提供されたコードとは何の関係もありません。エラーメッセージはWordpressと関係があります。47行目は次のコードです。<?php while (have_posts()) : the_post(); if (in_array($post->ID, $do_not_duplicate)) continue; ?><li class="contentli">


アップデート1

エラーメッセージは次のとおりです。

解析エラー:構文エラー、/ usr / local / pem / vhosts / 135377 / website /.../ newfile.php(26)の予期しない$ end:1行目のeval()コード

解析エラー:構文エラー、/ usr / local / pem / vhosts / 135377 / website /.../newfile.php(30)の予期しない$ end:1行目のeval()コード

致命的なエラー:32行目の/usr/local/pem/vhosts/135377/webspace/.../newfile.phpで1レベルを中断/続行できません


アップデート2

エラーメッセージはありませんが、フッター(<?php get_footer(); ?>)のコンテンツはサイトのソースコードにありますが、ユーザーには表示されません。(サイトのソースコードを確認すると、フッターファイルのすべての要素を見つけることができますが、これらの要素はブラウザーで適切にレンダリングされません)

0 投票する
1 に答える
1453 参照

php - Perlで特別なhtml文字を変換するには?

PHPでは、 Perlhtmlspecialcharsでそれを行う方法と同じくらい簡単です。

0 投票する
1 に答える
9109 参照

php - filter_var 対 htmlentities 対 htmlspecialchars

免責事項

これは、データベース入力をエスケープする必要があるかどうかの問題ではありません。これは、タイトルの 3 つの機能の技術的な違いを厳密に見たものです。

との違いについて議論するこの質問があります。しかし、実際には議論されておらず、私が Google で見つけた情報は、「エコーされる前にユーザー入力をエスケープするようにしてください!」という行に沿ったものでした。htmlentities()htmlspecialchars()filter_var()

私の質問は次のとおりです。

  • htmlspecialchars()と が の上でhtmlentities()一般的に使用されるのはなぜfilter_var()ですか?
  • 使用によるパフォーマンスの低下はありfilter_var()ますか?
  • filter_var()他の 2 つのオプションほど安全ではありませんか?
  • ユーザー入力をエンコードする前に、以下を使用しない理由は他にありますか?echod

filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

0 投票する
3 に答える
1087 参照

php - PHP の文字列から有効な XHTML を確認する

ブラウザにコンテンツを表示するために XHTML Transitional doctype を使用しています。ただし、コンテンツは表示され、ブラウザーに出力する前に最終的な仕上げを行うために XML パーサー (DOMDocument) を通過します。

私は自分のウェブサイトにカスタム設計された CMS を使用しているため、サイトに変更を加えることができます。WordPress ウィジェットと同様の方法で Web サイトに HTML スクリプトを表示できるモジュールがあります。

私が今直面している問題は、このモジュールを介して提供されるコードが有効な XHTML 形式であることを確認する必要があることです。そうしないと、モジュールがコードを有効な XHTML に変換する必要があります。現在、入力コードの一部が XHTML に準拠していない場合、XML パーサーが壊れて警告がスローされます。

私が探しているのは、URL に存在するエンティティと、TextArea コントロールを介して提供される入力のテキスト部分をエンコードするソリューションです。たとえば、次の文字列はパーサーを壊し、エンティティ参照エラーを発生させます。

また、次の行でも同じエラーが発生します。

PShtmlentitiesまたはhtmlspecialcharsを使用すると、タグの山かっこも変換されますが、これは必須ではありません。文字列のURLとテキスト部分をエスケープ/エンコードする必要があるだけです。

どんな助けでも大歓迎です。

ありがとう、よろしく、 ワカール・ムシュタク

0 投票する
2 に答える
1840 参照

php - 属性で XSS を防止する方法

そのため、ユーザーが選択したユーザー名を使用して登録し、大きなテキスト ブロックを送信してコメントを追加できるサイトを持っています。現在、XSS を回避するために、データベースへの入力時にデータに strip_tags を使用し、属性ではなく本体のデータのみを出力しています。現在、サイトに変更を加えています。そのうちの 1 つは、誰かがユーザー名 (リンク) をクリックしたときに読み込まれるユーザー ページを作成することです。これは次のようになります。

$username 変数の場合、誰かが挿入できるのではないかと心配しています

これに関する他のSOの投稿をたくさん読んだことがありますが、白黒の答えはありませんでした。入力の strip_tags に加えて、出力のすべてのテキストで次を使用すると:

javascript:インライン構文を使用するものを含め、すべての XSS 攻撃を阻止するのに十分でしょうか?

また、「Me > you」などを削除せずに実際の html タグを削除する方法はありますか?

ありがとう!

0 投票する
4 に答える
283 参照

php - magic_quotes をオフにして SQL を防止し、htmlentities を使用して XSS を防止することに関する質問

私のサーバーでは、magic_quotes がオフになっています。ユーザーがフォームからコンテンツを記事としてDBに保存するとき、私は使用します

$text = mysql_real_escape_string($_POST['text']);SQL インジェクションを防止します。

これは私の入力<img src="image.png"></img> であり、これがDBに保存されているものです<img src="image.png"></img>

echo htmlentities($row['text']);画面に<img src="image.png"></img>印刷されると、ソースを表示すると&lt;img src=&quot;image.png&quot;&gt;&lt;/img&gt;.

私の質問は

  1. <img src=\"image.png\"></img>SQL インジェクションを防ぐために、DB に保存する必要はありませんか?
  2. htmlentitiesXSS 攻撃を防ぐ良い候補はありますか?
  3. magic_quotes をオンにする必要がありますか?
0 投票する
1 に答える
189 参照

php - HTMLでの出力を可能にし、XSS攻撃を回避する関数とは何ですか

mySQLデータベースのデータを表示できる方法または関数を探しています。ユーザーは記事を投稿することができmysql_real_escape_stringます。これは、DBに投稿を挿入する前にSQLインジェクションを回避するために使用します。

私のテスト目的では、テキスト領域に。のようなタグを付けて投稿を書き込みます<b> <a> <i> <li>。後で、Stackoverflowでこのようなエディターを使用して、ユーザーの投稿を支援します。

ただし、私はXSSを認識しており、DBから直接エコーするだけでXSS攻撃が発生する可能性があります。そのため、テストでは、htmlentitiesまたはを使用してコンテンツを出力することを選択しましhtmlspecialcharsた。それらのどれも私にhtmlで正しく投稿を表示しません。

したがって、私はストリップタグを使用しましたが、私が知っていて読んでいる限り、安全ではありません。

XSSと同じ よう に、データを正しく出力できるようにする、あなたも使用できる関数は何ですか?this

0 投票する
1 に答える
36408 参照

xml - HTMLとXMLの特殊文字はどれですか?

HTMLおよびXMLの特別な予約文字エンティティとは何ですか?

私が持っている情報は言う:

HTML:

  • & (に置き換え&amp;ます)
  • < (に置き換え&lt;ます)
  • > (に置き換え&gt;ます)
  • " (に置き換え&quot;ます)
  • ' (に置き換え&apos;ます)

XML:

  • < (に置き換え&lt;ます)
  • > (に置き換え&gt;ます)
  • & (に置き換え&amp;ます)
  • ' (に置き換え&apos;ます)
  • " (に置き換え&quot;ます)

しかし、私はこれらのどちらに関するドキュメントも見つけることができません。

W3Cは、Extensible Markup Language(XML)1.0(Fifth Edition)で、特定の事前定義されたエンティティ参照について言及しています。ただし、これらのエンティティは事前定義されている(事前定義されているのと同じ方法で&copy;)と書かれています。それらをエスケープする必要があるというわけではありません。

4.6事前定義されたエンティティ

[定義:エンティティと文字の参照は両方とも 、左山かっこ、アンパサンド、およびその他の区切り文字をエスケープするために使用できます。この目的のために、一連の一般的なエンティティ(amp、lt、gt、apos、quot)が指定されます。数値文字参照も使用できます。これらは認識されるとすぐに展開され、文字データとして扱われる必要があるため、数字参照「&#60;」および「&#38;」は、文字データで使用される場合に<および&をエスケープするために使用できます。]

HTMLのエンティティ参照にエスケープする必要がある文字は何ですか?XMLのエンティティ参照にエスケープする必要がある文字は何ですか?


更新

Extensible Markup Language(XML)1.0(Fifth Edition)から:

2.4文字データとマークアップ

アンパサンド文字(&)と左山括弧(<)は 、マークアップ区切り文字として使用する場合、またはコメント、処理命令、またはCDATAセクション内で使用する場合を除いて、リテラル形式で表示してはなりません。他の場所で必要な場合は、数字参照または文字列" "と" "をそれぞれ使用してエスケープする必要があります。&amp;&lt;

直角ブラケット( )は文字列 " ">を使用して表すことができ、互換性のために、コンテンツの文字列 ""に表示される場合は、その文字列が終了をマークしていない場合は、""または文字参照を使用してエスケープする必要があります。 CDATAセクションの。&gt;&gt;]]>

属性値に一重引用符と二重引用符の両方を含めることができるように、アポストロフィまたは一重引用符(')を ""として表し&apos;、二重引用符(")を" &quot;"として表すことができます。

私は前者を次のように読んだ

する必要があります

  • <&lt;)は
  • &&amp;)は

可能性ありますが、]]>

  • >&gt;)として表示される場合は、]]>

そして、それはまったく逃げる必要は'あり"ません。引用符で囲まれた属性内に引用符を入れたい場合を除きます。


HTML 4.01仕様から、HTMLドキュメント表現:

5.3.2文字エンティティ参照

<テキストに「」文字を入れたい場合&lt;は、タグの先頭(開始タグのオープン区切り文字)との混同を避けるために、「」(ASCII 10進数の60)を使用する必要があります。

同様に、作成者は、引用符で囲まれた属性値に表示されるときにタグ(タグクローズ区切り文字)の終わりとしてこれを誤って認識する古いユーザーエージェントの問題を回避するため&gt;に、テキストで「」の代わりに「」(ASCII 10進数62)を使用する必要があります。>

作成者は、文字参照(エンティティ参照のオープン区切り文字)の先頭との混同を避けるために、「」&amp;の代わりに「」(ASCII 10進数38)を使用する必要があります。CDATA属性値内では文字参照が許可されているため、作成者は属性値に&も「」を使用する必要があります。&amp;

一部の作成者は、文字エンティティ参照 " &quot;"を使用して、二重引用符(")のインスタンスをエンコードします。これは、その文字を使用して属性値を区切ることができるためです。

HTMLは、ルールに関してははるかに意地悪ですが、私がすべきだと思われます:

  • <と一緒にいる必要があります&lt;
  • >と一緒にいる必要があります&gt;
  • &と一緒にいる必要があります&amp;
  • "と一緒にいる必要があります&quot;

また"、エンティティ参照になる可能性がある場合は、に置き換える必要があり'ます&amp;


アップデート2

HTML5から-HTMLおよびXHTMLの語彙および関連するAPI :

8.3HTMLフラグメントのシリアル化

文字列のエスケープ(上記のアルゴリズムの目的で)は、次の手順を実行することで構成されます。

&「 」文字の出現箇所を文字列「 」に置き換えます&amp;

U + 00A0NO-BREAKSPACE文字の出現箇所を文字列" &nbsp;"に置き換えます。

"アルゴリズムが属性モードで呼び出された場合は、「 」文字の出現箇所を文字列「 」に置き換えます&quot;

アルゴリズムが属性モードで呼び出されなかった場合は、「」文字の出現箇所を文字列「」に置き換え、「」文字の出現箇所を文字<列「&lt;」に置き換えます。>&gt;

私がHTMLとして読んだもの:

  • &&amp;いつもによって
  • &nbsp;いつもによって
  • "属性内に&quot;ある場合
  • <属性に含まれていない&lt;場合(つまり、属性に含めることができる場合)<
  • >属性に含まれていない&gt;場合(つまり、属性に含めることができる場合)>