相关疑难解决方法(0)

htmlentities()与htmlspecialchars()

htmlspecialchars()和之间有什么区别htmlentities()?我什么时候应该使用其中一种?

php

526
推荐指数
10
解决办法
31万
查看次数

安全的XSS清洁功能(定期更新)

我现在一直在网上打猎几天试图解决这个问题,但得到了相互矛盾的答案.

是否有PHP的库,类或函数可以安全地清理/编码针对XSS的字符串?它需要定期更新以应对新的攻击.

我有几个用例:

用例1)我有一个纯文本字段,比如名字或姓氏

  • 用户将文本输入字段并提交表单
  • 在将其保存到数据库之前,我想a)修剪字符串前端和末尾的任何空格,以及b)从输入中删除所有HTML标记.它是一个名称文本字段,它们不应包含任何HTML.
  • 然后我将使用PDO预处理语句将其保存到数据库中.

我想我可以做trim(),strip_tags()然后使用Sanitize过滤器或带有白名单字符的RegEx.他们真的需要像这样的人物!和?或者< >以他们的名义,不是真的.

用例2)当从先前保存的数据库记录(或从先前提交的表单)输出内容到View/HTML时,我想彻底清除它以用于XSS.注意:它可能已经或可能没有经过用例1中的过滤步骤,因为它可能是不同类型的输入,因此假设没有进行消毒.

最初我虽然HTMLPurifier会做这个工作,但是当我向他们的支持提出问题时,它似乎不是我需要的:

这是试金石:如果用户提交<b>foo</b>它应该显示为<b>foo</b>foo?如果是前者,则不需要HTML Purifier.

所以我宁愿它出现,<b>foo</b>因为我不希望为简单的文本字段或任何执行的JavaScript显示任何HTML.

所以我一直在寻找能够为我做这一切的功能.我偶然发现了Kohana 3.0使用xss_clean方法,我猜它是有效的,但只有当你想保留HTML时才会这样.它现在已经从Kohana 3.1中弃用,因为它们已经用HTMLPurifier取代了它.所以我猜你应该做的HTML::chars()只是做这个代码:

public static function chars($value, $double_encode = TRUE)
{
    return htmlspecialchars( (string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}
Run Code Online (Sandbox Code Playgroud)

现在显然你应该使用htmlentities而不是像Stack Overflow中的很多地方所提到的那样,因为它比htmlspecialchars更安全.

  • 那么如何正确使用htmlentities?
  • 这就是我需要的吗?
  • 它如何防止从 …

php security xss filtering sanitization

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

清理$ _GET参数以避免XSS和其他攻击

我有一个php的网站,包括()将内容嵌入到模板中.要加载的页面在get参数中给出,我将".php"添加到参数的末尾并包含该页面.我需要做一些安全检查以避免XSS或其他东西(不是mysql注入,因为我们没有数据库).我想出的是以下内容.

$page = $_GET['page'];

if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
    !strpos($page, '\\') || !strpos($page, '..')) {
        //append ".php" to $page and include the page
Run Code Online (Sandbox Code Playgroud)

我还能做些什么来进一步消毒我的输入吗?

php sanitization

13
推荐指数
3
解决办法
4万
查看次数

在没有脚本标签的情况下为 XSS 执行 JavaScript

我正在学习 XSS(出于道德目的),我想知道如何在不使用<script>标签的情况下执行一些 JavaScript 代码。这是在

HTML 标签:

"The search term" <p> *JavaScript here* </p> "returned no results"
Run Code Online (Sandbox Code Playgroud)

由于某种原因,脚本标签不起作用。

html javascript security xss

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

如何在JS中单击省略号时以模态显示整个文本?

我正在处理如下所示的php代码,其中在特定字数限制后添加了省略号(...)

 <?php
      $programs = array();

      foreach ( $xml_files as $file ) {

      $xml = simplexml_load_file($src_dir."/".$file)  or die('Unable to load XML');

      $path_title_en = $xml->xpath('//StringAssetInfo[attrName="CASE_EPISODE_TITLE"]/value');

      $path_description_en = $xml->xpath('//TextAssetInfo[attrName="CASE_DESCRIPTION_ENGLISH"]/value');

      $programs[] = array(  "episode_title" => (string)$path_title_en, 
            "description" => (string)$path_description_en;  
            } 

      $program["episode_title"] = substr($program["episode_title"],0,50).' <a href="">(...)</a>';  /* ellipsis is added after a particular word limit */ 

      $program["description"] = substr($program["description"],0,100).' <a href="">(...)</a>';  /* ellipsis is added after a particular word limit */        
 ?>
 <table>
    <tr>
        <td style="width:8%; text-align:center;"><?php echo $program["episode_title"]; ?></td> /* Line A …
Run Code Online (Sandbox Code Playgroud)

html javascript css php modal-dialog

7
推荐指数
1
解决办法
407
查看次数

如何安全地回显 $_GET ?

<?php
    echo $_GET['id'];
?>
Run Code Online (Sandbox Code Playgroud)

对我来说看起来不太安全.. 显示GET元素的最佳选择是什么?

preg_replace所有特殊字符上的a 一样,或者htmlspecialchars

php

4
推荐指数
1
解决办法
6557
查看次数

如何使用PHP重新编译插入数据库的JavaScript脚本?

关于PHP中的数据插入,我有一个问题.

在我的网站上有一个消息系统.

因此,当我的收件箱加载时,它会提供一个JavaScript警报.

我在我的网站上搜索了很多,最后我发现有人给我发了一条信息,上面有文字.

<script>
  alert(5)
</script>
Run Code Online (Sandbox Code Playgroud)

那么如何限制插入数据库的脚本代码呢?

我正在运行PHP.

javascript php database

2
推荐指数
3
解决办法
1566
查看次数

PHP 转义 URL 参数中的特殊字符

我尝试在通过 URL 传递参数时删除特殊字符,以避免被入侵者注入,例如我有以下 URL:

www.sitename.com/people?job=manager
Run Code Online (Sandbox Code Playgroud)

alert在参数后面添加了一个脚本,如下所示:

www.sitename.com/people?job=manager"/><script>alert%2844749%29<%2fscript>
Run Code Online (Sandbox Code Playgroud)

当我运行该 URL 时,将alert弹出,这可能会导致通过此技术检索站点信息时出现漏洞。我将使用$_REQUEST获取传递参数来生成结果。我可以在下面应用这种方法来逃避 URL 注入技术吗?

$job = $_REQUEST["job"];
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议。

php escaping

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

为什么这是XSS攻击以及如何防止这种情况?

我有这个PHP代码,我的CMS安全自动测试说这是一个XSS攻击.为什么以及如何解决此问题?

$url = "news.php";
if (isset($_GET['id']))
  $url .= "?id=".$_GET["id"];
echo "<a href='{$url}'>News</a>";
Run Code Online (Sandbox Code Playgroud)

php xss

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

如何在Web表单中停止数据注入?

我有一个网页,其中有多个页面都有html表单.但是我受到了不属于该领域的奇怪数据的轰炸.例:

\'\"><svg/onload=(new(Image)).src=\'//rytk88vs0h2tc4yierrvrpgr2i8lwdm1eo8cx\\56burpcollaborator.net\
Run Code Online (Sandbox Code Playgroud)

但这应该是一个

<select><option></option></select>
Run Code Online (Sandbox Code Playgroud)

它不是文本输入字段.那么这个人如何提交奇怪的代码呢?我怎么能阻止这个?

html php forms

-1
推荐指数
1
解决办法
106
查看次数