标签: htmlspecialchars

如何防止属性中的XSS

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

<a href="example.com/user/<?php echo $username; ?>">...</a>
Run Code Online (Sandbox Code Playgroud)

我担心$ username变量,有人可以插入

<a href="example.com/user/user" onClick="javascript:alert('XSS');">...</a>
Run Code Online (Sandbox Code Playgroud)

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

echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

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

另外,有没有办法删除实际的HTML标签而不删除像"我>你"这样的东西?

谢谢!

html php xss htmlspecialchars strip-tags

6
推荐指数
1
解决办法
1510
查看次数

在所有情况下使用htmlspecialchars()是否足够?

我的用户可以在我的数据库中插入任何内容.

因此,使用白名单/黑名单字符不是一种选择.

我并不担心(覆盖它)关于数据库端(SQL注入),而是我的页面中的代码注入.

是否有任何情况htmlspecialchars()不足以阻止代码注入?

php security htmlspecialchars

6
推荐指数
1
解决办法
2951
查看次数

使用htmlspecialchars()仅使用单引号(单独使用双引号)

我知道还有其他方法只能转义单引号(比如这个答案),但在我看来应该有一种方法可以使用htmlspecialchars().

根据手册,它应该是它们常量的某种组合,但根据它们的解释,我看不到它.

有可能只逃避单引号,只留下双引号htmlspecialchars()吗?

php escaping htmlspecialchars

6
推荐指数
2
解决办法
1万
查看次数

htmlspecialchars输出空白

同时使用htmlspecialchars和htmlentities会导致符号甚至单'引号等项目的空白输出.显然,这绝对是无用的,但是在不使用html字符的情况下输出数据会导致这两个符号都出现.出现这种情况的原因是什么?

这是导致问题的代码:

<p>
<?php 
    echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")); 
?>
</p>
Run Code Online (Sandbox Code Playgroud)

html php htmlspecialchars

6
推荐指数
1
解决办法
6166
查看次数

如何使用javascript在文本输入中获取html特殊字符

我想将一些html特殊字符发送到文本字段,然后使用javascript将其恢复为原始格式:如果我发送"&pi",它将在文本输入上显示"π",当我使用javascript时得到它,我应该得到"&pi",但我只能得到"π",而不是"&pi".请帮忙,我的代码如下:

<script type="text/javascript"> 
function qpush(a) {
    document.getElementById('input').value += a;
}

function show(a) {
    alert(document.getElementById('input').value);
}
</script>

<input type="text" id="input" />
<input type="button" onclick="qpush('&pi;');" value="&pi;" />
<input type="button" onclick="show()" value="go" />
Run Code Online (Sandbox Code Playgroud)

html javascript escaping special-characters htmlspecialchars

6
推荐指数
1
解决办法
1万
查看次数

PHP htmlentities即使参数也不起作用

当然,之前已经提出了这个问题并且已经找到了解决方案,所有这些解决方案迄今为止都没有用 我想通过使用htmlentities或更改TM符号和&符号到他们的html equivelents htmlspecialchars:

$TEST = "Kold Locker™ & other stuff";
echo "ORGINIAL: " . $TEST . "<BR/>";

echo "HTML: " . htmlentities($TEST, ENT_COMPAT, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

这显示:

ORGINIAL: Kold Locker™ & other stuff
HTML: 
Run Code Online (Sandbox Code Playgroud)

我也尝试过,htmlspecialchars第二个参数改变了相同的结果.

我错过了其他人声称在其他解决方案中工作的内容?

更新:我尝试只显示utf8_encode($TEST)并显示HTML: Kold Locker™ & other stuff

php html-entities htmlspecialchars

6
推荐指数
3
解决办法
1万
查看次数

有什么方法可以减少htmlspecialchars()的CPU使用率?

我有一个php 5.4/ mysql每天5万次点击的网站,有一个Linux服务器上运行nginxphp-fpm.数据库位于单独的服务器上.

我注意到,在高峰时段,我的网络服务器负载最多为15,而四核处理器则为4.我用php xdebugxhprof描述了我的php应用程序,并看到,90%的CPU工作是由htmlspecialchars()Twig我用来显示数据的模板中函数完成的.htmlspecialchars()每页有时会有100到1000个电话.我试图减少无法逃避,但仍然无法避免.

有什么方法可以减少htmlspecialchars()功能的CPU使用率吗?也许在PHP中存在某种缓存?还是有另一种方式?

php performance cpu-usage htmlspecialchars twig

6
推荐指数
1
解决办法
375
查看次数

htmlspecialchars&ENT_QUOTES不工作?

基本上在显示来自MySQL数据库的数据时,我有一个htmlspecialchars()函数,它应该将单引号和双引号转换为它们的安全实体.我遇到的问题是查看源代码,它只在转换< > &时才需要转换单引号和双引号.

//sanitize data from db before displaying on webpage
function htmlsan($htmlsanitize){
    return $htmlsanitize = htmlspecialchars($htmlsanitize, ENT_QUOTES, 'UTF-8');
}
Run Code Online (Sandbox Code Playgroud)

然后当我想用我做的时候:

htmlsan($row['comment']);
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么它不会转换单引号和双引号吗?

UPDATE

有什么奇怪的htmlsan()是用在电子邮件中的评论中,当我查看电子邮件的源代码时,它会转换它们,似乎它不会在网页上显示时转换数据库中的单/双引号.我的数据库排序规则也设置为utf8_general_ci,我声明我在数据库连接等上使用utf8.

php htmlspecialchars

5
推荐指数
2
解决办法
2万
查看次数

考虑到函数的哪个字符集从PHP5.2变为PHP5.4

将文件保存在ISO-8859-1中并使用该命令时

echo "test: ".htmlspecialchars("äöü");
Run Code Online (Sandbox Code Playgroud)

返回将只是"测试:".

这是因为htmlspecialchars的标准字符集在PHP5.4中更改为UTF-8.您需要显式设置charset:

echo "test: ".htmlspecialchars("äöü", ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)

PHP5.4中是否还有其他功能,如果你没有设置charset,它将不再正常工作?

php character-encoding htmlspecialchars

5
推荐指数
1
解决办法
744
查看次数

C++对特殊字符如ü

我无法使用C++中的tolower()函数将字符串转换为小写.使用普通字符串时,它会按预期工作,但不会成功转换特殊字符.

我如何使用我的功能:

string NotLowerCase = "Grüßen";
string LowerCase = "";
for (unsigned int i = 0; i < NotLowerCase.length(); i++) {
    LowerCase += tolower(NotLowerCase[i]);
    }
Run Code Online (Sandbox Code Playgroud)

例如:

  1. 测试 - >测试
  2. TeST2 - > test2
  3. Grüßen - > gr ???? en
  4. (§) - >()

你可以看到,3和4没有按预期工作

我该如何解决这个问题?我必须保留特殊字符,但是小写.

c++ character-encoding htmlspecialchars

5
推荐指数
1
解决办法
2875
查看次数