"; echo htmlspecialchars_decode($str); ?> 上面代码的 HTML 输出如下(查看源代码): <! php echo htmlspecialchars_decode($vo['content']);? > 参考链接:http://www.runoob.com/php/func-string-htmlspecialchars-decode.html Tags: None Archives QR
include/common.func.php 文件被覆盖,从而在发布文章时、打开文件管理器对文件进行编辑时、增加自定义表单时等,会出现“Call to undefined function dede_htmlspecialchars 解决办法如下: 打开 /include/common.func.php,搜索“function RunApp”,在这个函数的上面添加织梦新版本新增的函数:dede_htmlspecialchars,具体代码如下 : function dede_htmlspecialchars($str) { global $cfg_soft_lang; if (version_compare(PHP_VERSION , '5.4.0', '<')) return htmlspecialchars($str); if ($cfg_soft_lang=='gb2312') return htmlspecialchars ($str,ENT_COMPAT,'ISO-8859-1'); else return htmlspecialchars($str); }
";
echo htmlspecialchars($str);
?>
以上代码的 HTML 输出如下(查看源代码):
&/
/lt;! 运行实例
定义和用法
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // 只转换双引号
echo "
";
echo htmlspecialchars 下面看下PHP htmlspecialchars()的用法
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。 以上所述是小编给大家介绍的PHP htmlspecialchars() 函数实例代码及用法大全,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
问题原因是:php5.4版本中htmlspecialchars在php5.4默认为utf8编码,gbk编码的字符串经过htmlspecialchars 转义后的中文字符串为空了,所以造成添加文章时提示“ 把 $title =htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)); 改成 $title =htmlspecialchars(cn_substrR 找到大约 76行 将 $HtmlValue = htmlspecialchars( $this->Value ) ; 替换为 $HtmlValue = htmlspecialchars($this->Value /dede/file_manage_view.php; 搜索 $content= htmlspecialchars($content); 替换成 $content =htmlspecialchars( ”,在这个函数的上面添加织梦新版本新增的函数:dede_htmlspecialchars,具体代码如下: function dede_htmlspecialchars($str) { global $
PHP当然也有类似这样的方法那就是 htmlspecialchars,而且还提供一个转回方法 htmlspecialchars_decode() 官方说明: ? 所以我们使用 htmlspecialchars完全可以作为防止SQL注入的第一步。 下面来看一个实例: echo htmlspecialchars("<script>") 使用 htmlspecialchars 转换后我们得到的结果如下: <script>gt; 可以看到
从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了! 当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到。 ENT_COMPAT,因此改成 htmlspecialchars($str,ENT_COMPAT,'GB2312'); 为什么不是GBK? 8 为了能使用GBK,则改成: htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1'); 1.2.一样是改程序,但可以省略一个参数。 大概意思就是:传入空字符串则使用default_charset的编码 1.3.封装一个函数吧...本来htmlspecialchars这个单词一直不好记。
.= htmlspecialchars(urldecode($params[2]));//获取第某页 } function __breadcrumb_Sort_Cache($id){ global (urldecode($params[5]));//获取第某页 } }elseif( $params[1] == 'tag' ){//标签 //标签名称:htmlspecialchars (urldecode($params[2])); //标签链接:$tag_url = Url::tag($params[2]); $sheli_mbx .= htmlspecialchars (urldecode($params[2])); if( $params[4]=='page' ){ $sheli_mbx .= htmlspecialchars(urldecode ($params[5]));//获取第某页 } }elseif( $params[1] == 'keyword' ){//搜索 $sheli_mbx .= htmlspecialchars
imgsize = chImageSize($row['photo'], Option::ICON_MAX_W, Option::ICON_MAX_H); $photo['src'] = htmlspecialchars ($row['nickname']), 'mail' => htmlspecialchars($row['email']), 'des' => htmlClean($row ['description']), 'ischeck' => htmlspecialchars($row['ischeck']), 'role' => $row['role ($row['nickname']), 'mail' => htmlspecialchars($row['email']), 'des' => htmlClean ($row['description']), 'ischeck' => htmlspecialchars($row['ischeck']), 'role'
Oil = $_POST["oilqty"] ;
$Spark = $_POST["sparkqty"] ;
// 要向在页面可视化这些数据,可以使用echo()输出,但是为了考虑安全问题,需要使用htmlspecialchars ()函数;
// htmlspecialchars():返回HTML实体
echo htmlspecialchars($Tire)."
".htmlspecialchars($Oil)."
".htmlspecialchars($Spark)."
";
?
存储型xss漏洞防范 存储型XSS对用户的输入进行过滤的方式和反射型XSS相同,这里我们使用htmlspecialchars()函数进行演示: htmlentities ( ) :把预定义的字符 "< ;" (小于)和 ">" (大于)转换为 HTML 实体 htmlspecialchars和 htmlentities的区别: htmlspecialchars 只转义 & ; 、 " 、' 新建Xss_htmlspecialchars.php文件,并插入以下代码 <meta http -equiv = "Content-Type "\r\n" ) ; # 在此对用户输入数据$_POST['user']进行过滤 fwrite ( $log , htmlspecialchars ( $_POST [ 'desc' ] ) . 查看网页html代码,可以看到htmlspecialchars()函数对用户输入的<>做了转义处理。
问题根源:htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecialchars 转义后的中文字符串为空,也就是标题为空. 解决办法:给htmlspecialchars添加ENT_COMPAT ,’GB2312’参数修改编码默认值. 具体修改页面,代码如下: 1、dede/article_add.php 将$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)) 将$title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)); 改为$title = htmlspecialchars(cn_substrR ($value) 改为htmlspecialchars($value, ENT_COMPAT ,'GB2312′) 改完以后一切OK了,"标题不能为空"的提示不再出现了,文章也可以正常发布了
把一些关键部位调整到位后刷新页面,发现原先用于输出备案信息的地方被转义输出成字符串了,印象中TP模版输出默认是使用htmlspecialchars函数的,既然能原样输出字符串,所以和后端改造的关联不大。 ',这样也可以将htmlentities 换成 htmlspecialchars过滤。 htmlentities()和htmlspecialchars()的区别。 一直用htmlspecialchars函数,htmlentities别说用了,一点印象都没有(汗,还是手册看少了)。 而htmlspecialchars是把预定义的字符转换为HTML实体。htmlspecialchars字符包括连接符(&)、双引号(")、单引号(')、小于(<)、大于(>)。 如果需要把HTML实体再转换为字符,这两个函数都提供了一个decode函数分别是html_entity_decode()、htmlspecialchars_decode(),拼写有区别,前面是拆分html
> </body> </html> htmlspecialchars($str)用法 htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 ($str1); echo ' '; echo htmlspecialchars($str2); echo ' '; echo htmlspecialchars($str3 ); echo ' '; echo htmlspecialchars($str4); echo ' '; echo htmlspecialchars($str5); htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>"; ? htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>"; ?
//没有经过适当的HTML实体编码(如使用htmlspecialchars),存在XSS风险。 修正示例: 1// 假设从数据库获取数据后准备展示给用户 2$safeMessage = htmlspecialchars($retrievedMessage, ENT_QUOTES, 'UTF-8') ; 3$safeName = htmlspecialchars($retrievedName, ENT_QUOTES, 'UTF-8'); 4 5echo "Comment: $safeMessage< "" : "")); $message = htmlspecialchars( $message ); //htmlspecialchars()函数将特殊字符(如<, >, &, ", "" : "")); $message = htmlspecialchars( $message ); // Sanitize name input $name = preg_replace(
strong>标题
<input type="text" style="width:75%;" name="meta_ydmao_catetitle" value="'.<em>htmlspecialchars</em> 关键词</strong><br>
<input type="text" style="width:75%;" name="meta_ydmao_catekeywords" value="'.<em>htmlspecialchars</em> 描述</strong><br>
<input type="text" style="width:75%;" name="meta_ydmao_catemiaoshu" value="'.<em>htmlspecialchars</em> 关键词</strong><br>
<input type="text" style="width:75%;" name="meta_ydmao_tagkeywords" value="'.<em>htmlspecialchars</em> 描述</strong><br>
<input type="text" style="width:75%;" name="meta_ydmao_tagmiaoshu" value="'.<em>htmlspecialchars</em>
方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串 echo I('get.name','','htmlspecialchars'); 支持直接获取整个变量类型,例如: // 获取整个 $_GET 数组 I('get.'); 用同样的方式,我们可以获取post或者其他输入类型的变量,例如: I('post.name','','htmlspecialchars'); // 采用htmlspecialchars ' 也就说,I方法的所有获取变量如果没有设置过滤方法的话都会进行htmlspecialchars过滤,那么: // 等同于 htmlspecialchars($_GET['name']) I('get.name '); 同样,该参数也可以设置支持多个过滤,例如: 'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars' 设置后,我们在使用: // 等同于 htmlspecialchars(strip_tags($_GET['name'])) I('get.name'); 如果我们在使用I方法的时候 指定了过滤方法,那么就会忽略DEFAULT_FILTER
5Cu0061%5Cu006C%5Cu0065%5Cu0072%5Cu0074(XSS)"> #最后用html实体编码,再编码整个payload 太长了,略 JavaScript htmlspecialchars ()函数绕过 htmlspecialchars()函数是一种常用的PHP函数,用于将特殊字符转换为HTML实体,以防止跨站脚本攻击(XSS)。 #该函数的语法: htmlspecialchars(string,flags,character-set,double_encode) #可用的quotestyle类型: ENT_COMPAT 单引号) 成为 ' < (小于) 成为 < > (大于) 成为 > PHP 过滤原理:htmlspecialchars JavaScript href伪协议绕过 当输入的值在 a 标签 herf 里 payload:javascript:alert(1111) JavaScript 直接代入 a 标签 herf 里面,一样可以绕过 htmlspecialchars
php ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "
PHP过滤表单字段 函数名 释义 介绍 htmlspecialchars 将与、单双引号、大于和小于号化成HTML格式 &转成& "转成" ' 转成' <转成 < >转成> htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等。 kindedit编辑器: 从post来的进行addslashes后就可存入数据库了,取出后直接echo即可 普通的文本: 1.htmlspecialchars接着addslashes存入数据库 2.addslashes存入数据库,取出后htmlspecialchars输出。 说明: addslashes仅仅是为了让原来的字符正确地进入数据库。 htmlspecialchars是吧html标签转化掉。
"\t" - 制表符 "\n" - 换行 "\x0B" - 垂直制表符 "\r" - 回车 " " - 空格 trim(" Hello "); 输出 Hello PHP htmlspecialchars () 函数 定义和用法 htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: & (和号)成为 & " (双引号)成为 " ' (单引号)成为 ' < (小于)成为 < > (大于)成为 > 提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode 语法 htmlspecialchars(string,flags,character-set,double_encode) 复制代码 参数 描述 string 必需。规定要转换的字符串。 //htmlspecialchars('123<sdf>') 输出123<sdf> // 把特殊的 HTML 实体转换回字符htmlspecialchars_decode('123<sdf