问题标签 [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(); ?>

任何帮助将不胜感激对不起我的英语

丹尼尔


我得到了这个:注意:未定义的变量:第 47 行 /usr/local/pem/vhosts/135377/webspace/httpdocs/folder/wp-content/themes/one/index.php 中的 do_not_duplicate 警告:in_array():错误的数据类型对于第 47 行 /usr/local/pem/vhosts/135377/webspace/httpdocs/folder/wp-content/themes/one/index.php 中的第二个参数

错误信息与之前提供的代码无关,错误信息与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/webspace/.../newfile.php(26) 中的意外 $end :第 1 行的 eval() 代码

解析错误:语法错误,/usr/local/pem/vhosts/135377/webspace/.../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中它很简单htmlspecialchars,如何在Perl中做到这一点?

0 投票
2 回答
1113 浏览

php - 在 PHP 中处理所见即所得数据

我需要使用所见即所得的编辑器来处理用户输入。

你如何在php中处理这个?

如果我检索数据并使用 htmlspecialchars,那么所有由所见即所得编辑器转换为特殊字符的字符都会被弄乱。

例如报价将是&quote;

当我htmlspecialchars在 php 中使用 & 将被转换为&amp;

这将是一个明显的问题。有任何想法吗?

0 投票
1 回答
9109 浏览

php - filter_var vs htmlentities vs htmlspecialchars

免责声明

这不是关于我们是否应该为数据库输入转义的问题。这是严格查看标题中三个功能之间的技术差异。

这个问题htmlentities()讨论和之间的区别htmlspecialchars()。但是,它并没有真正讨论filter_var(),我在 Google 上找到的信息更像是“确保在回显之前避开用户输入!”

我的问题是:

  • 为什么都htmlspecialchars()htmlentities()常用过来filter_var()
  • 使用会不会影响性能filter_var()
  • filter_var()不是像其他两个选项一样安全?
  • 是否有任何其他原因不使用以下内容对用户输入进行编码之前echod

filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

0 投票
3 回答
1087 浏览

php - 确保 PHP 中字符串的 XHTML 有效

我正在使用 XHTML 过渡文档类型在浏览器中显示内容。但是,显示的内容是通过 XML 解析器 (DOMDocument) 传递的,以便在输出到浏览器之前进行最后的润色。

我为我的网站使用定制设计的 CMS,它允许我对网站进行更改。我有一个模块,它允许我以类似于 WordPress 小部件的方式在我的网站上显示 HTML 脚本。

我现在面临的问题是我需要确保通过此模块提供的任何代码都应该采用有效的 XHTML 格式,否则模块将需要将代码转换为有效的 XHTML。目前,如果输入代码的一部分不符合 XHTML,那么我的 XML 解析器会中断并引发警告。

我正在寻找的是一种解决方案,它对 URL 中存在的实体和通过 TextArea 控件提供的输入的文本部分进行编码。例如,以下字符串将破坏解析器给出实体引用错误:

以下行也会导致相同的错误:

PS如果我使用htmlentitiesor htmlspecialchars,他们也会转换标签的尖括号,这不是必需的。我只需要对字符串的 url 和文本部分进行转义/编码。

任何帮助将不胜感激。

谢谢和问候, Waqar Mushtaq

0 投票
2 回答
1840 浏览

php - 如何防止属性中的 XSS

所以我有一个网站,用户可以使用他们选择的用户名进行注册,并且可以提交大量文本并添加评论。目前,为了避免 XSS,我在输入到数据库的数据上使用 strip_tags,我只在正文中输出数据,而不是在属性中。我目前正在对该站点进行更改,其中之一是创建一个用户页面,当有人单击用户名(链接)时加载该页面。这看起来像:

我担心对于 $username 变量,有人可能会插入

我已经阅读了很多关于此的其他 SO 帖子,但没有一个给出黑白答案。如果我在输出上的所有文本上使用以下内容,除了输入上的 strip_tags:

这是否足以阻止所有 XSS 攻击,包括那些使用内联javascript:语法的攻击?

另外,有什么方法可以删除实际的 html 标签而不删除“我>你”之类的东西?

谢谢!

0 投票
4 回答
283 浏览

php - 关于使用magic_quotes 关闭SQL 和使用htmlentities 防止XSS 的问题

在我的服务器上,我关闭了 magic_quotes。当用户从表单将内容保存为我的数据库中的文章时,我使用

$text = mysql_real_escape_string($_POST['text']);以防止 SQL 注入。

这是我的输入<img src="image.png"></img> ,这就是它保存在数据库中的内容<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 注入那样保存在数据库中吗?
  2. htmlentities防止 XSS 攻击的好选择吗?
  3. 我应该打开magic_quotes吗?
0 投票
1 回答
189 浏览

php - 什么是允许输出 HTML 并避免 XSS 攻击的功能

我正在寻找一种方法或功能,可以让我显示我的 mySQL 数据库中的数据。允许用户发布文章,mysql_real_escape_string在将他们的帖子插入数据库之前,我使用这些文章来避免 SQL 注入。

为了我的测试目的,我在一个文本区域写了我的帖子,带有<b> <a> <i> <li>. 稍后我将在 Stackoverflow 上使用像这样的编辑器来帮助用户发布他们的帖子。

但是,我知道 XSS 并且直接从数据库回显可能会导致 XSS 攻击。因此,我为我的测试选择了使用htmlentitiesor输出内容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 在可扩展标记语言 (XML) 1.0(第五版)中确实提到了某些预定义的实体引用。但它说这些实体是预定义的(以与预定义相同的方式&copy;);并不是说他们必须逃脱:

4.6 预定义实体

[定义:实体和字符引用都可以用来 转义左尖括号、& 和其他分隔符。为此目的指定了一组通用实体(amp、lt、gt、apos、quot)。也可以使用数字字符引用;它们在识别时立即展开并且必须被视为字符数据,因此数字字符引用“ < ”和“ & ”可用于转义 < 和 & 当它们出现在字符数据中时。]

哪些字符必须转义到HTML中的实体引用中?哪些字符必须转义到XML中的实体引用中?


更新

来自可扩展标记语言 (XML) 1.0(第五版)

2.4 字符数据和标记

& 符号 ( &) 和左尖括号 ( <)不得 以其文字形式出现,除非用作标记分隔符,或者在注释、处理指令或 CDATA 部分中。如果在其他地方需要它们,它们必须分别使用数字字符引用或字符串“ &amp;”和“ &lt;”进行转义。

右尖括号 ( >) 可以使用字符串 " &gt;" 表示,并且为了兼容性,当它出现在内容中的字符串 " " 中时,必须使用 " &gt;" 或字符引用进行转义]]>,当该字符串未标记结束时的 CDATA 部分。

为了允许属性值包含单引号和双引号,撇号或单引号字符 ( ') 可以表示为 " &apos;",双引号字符 ( ") 表示为 " &quot;"。

我读到前者是这样说的

必须是

  • <( &lt;) 必须是
  • &( &amp;) 必须是

可以,但当出现时必须]]>

  • >( &gt;) 必须是,如果显示为]]>

并且'根本"不必逃避;除非您想在带引号的属性中加上引号。


来自HTML 4.01 规范,HTML 文档表示

5.3.2 字符实体引用

希望将“ <”字符放入文本中的作者应使用“ &lt;”(ASCII 十进制 60)以避免可能与标记开头(开始标记打开分隔符)混淆。

同样,作者应该&gt;在文本中使用“”(ASCII 十进制 62)而不是“ >”,以避免旧用户代理在出现在引用的属性值中时错误地将其视为标记的结尾(标记关闭分隔符)的问题。

作者应使用“ &amp;”(ASCII 十进制 38)而不是“ &”,以避免与字符引用的开头混淆(实体引用打开分隔符)。作者还应该在属性值中使用“ &amp;”,因为在 CDATA 属性值中允许字符引用。

一些作者使用字符实体引用“ &quot;”来编码双引号 ( ") 的实例,因为该字符可用于分隔属性值。

HTML 在规则上更加空泛,但听起来我应该

  • <应该与&lt;
  • >应该与&gt;
  • &应该与&amp;
  • "应该与&quot;

如果"可以是实体引用,我也应该替换'&amp;.


更新二

来自HTML5 - HTML 和 XHTML 的词汇表和相关 API

8.3 序列化 HTML 片段

转义字符串(出于上述算法的目的)包括运行以下步骤:

用字符串“”替换任何出现的“ &”字符&amp;

用字符串“”替换任何出现的 U+00A0 NO-BREAK SPACE 字符&nbsp;

如果算法是在属性模式下调用的,则用字符串“”替换任何出现的“ "”字符&quot;

如果在属性模式下没有调用算法,则将任何出现的“ <”字符替换为字符串“ &lt;”,并将任何出现的“ >”字符替换为字符串“ &gt;”。

我读为HTML

  • &&amp;总是_
  • &nbsp;总是_
  • "&quot;如果它在属性内
  • <&lt;如果它不在属性中(即属性可以包含<
  • >&gt;如果它不在属性中(即属性可以包含>