xss 相关问题

跨站点脚本(XSS)是Web应用程序中常见的一种计算机安全漏洞,它使恶意攻击者能够将客户端脚本注入其他用户查看的网页中。攻击者可以使用利用漏洞利用的跨站点脚本漏洞来绕过访问控制,例如相同的源策略。

Next中的dangerouslySetInnerHTML真的很危险吗?什么时候可以使用?

我在Next中实现了Google Tag Manager,我在网上看到的所有资源都说使用dangerouslySetInnerHTML。我对文档的理解是它是“危险的”,因为它

回答 1 投票 0

为什么空方法在 JavaScript 中就像接收器一样工作?

我用空方法b()定义对象a。该方法没有参数并且不执行任何操作! 请问有人告诉我,为什么当我调用 a.b() 并传递 JS 代码作为参数时,它会执行代码吗? ...

回答 1 投票 0

在 Express 服务器中停止 XSS

我想在我的服务器上实现XSS过滤主要有两个原因: 当我的服务器上发生 XSS 攻击时,我希望实时收到通知。这将使我能够立即采取...

回答 1 投票 0

如何防范FtpWebRequest上的跨站脚本(XSS)漏洞?

我正在使用 FtpWebRequest 将文件上传到服务器。但它会导致严重的跨站点脚本(XSS)漏洞。该文件内容是导入的,我需要按原样上传。我该如何解决这个问题...

回答 2 投票 0

启用 HTTPOnly 和 CSP 时使用 XSS 窃取 Cookie:解决方法和策略

当 HTTPOnly 开启且定义了 CSP 规则时,如何窃取 cookie?假设攻击者获得了一个执行 HTTP 的输入字段,并且该输入字段容易受到 XSS 攻击: 当 HTTPOnly 开启且定义了 CSP 规则时,如何窃取 cookie?假设攻击者获得了一个执行 HTTP 的输入字段,并且该输入字段容易受到 XSS 攻击: <form action="/createThread?topic={{lcTopic}}" method="post" class=""> <h2 class="text-muted">New Thread</h2> <hr> <div class="form-group"> <label>Body</label> <textarea type="text" rows="10" class="form-control" name="body" placeholder="Type the body of your thread here..."></textarea> </div> <button type="submit" class="btn btn-primary">Create Thread</button> <button type="button" id="threadPreview" class="btn btn-default">Preview</button> </form>` 在我的服务器中,我将 CSP 规则定义为: .use( helmet.contentSecurityPolicy({ directives: { defaultSrc: ["'self'"], scriptSrc: [ "'self'", "cdnjs.cloudflare.com" ], }, }) ) 攻击者可能通过将以下代码注入文本字段来绕过 CSP: <!DOCTYPE html> <html> <head> <title>XSS Demo</title> <SCRIPT src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></SCRIPT> <SCRIPT src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.8/angular.js"></SCRIPT> </head> <body ng-app ng-csp> <div> <button ng-click="$on.curry.call().alert('xss')">Click Me! </button> <div style="display:none;"> {{$on.curry.call().alert('xss')}} </div> </div> </body> </html> 现在,由于启用了 HTTPOnly,攻击者无法简单地执行“alert(document.cookie)”。考虑到 CSP 规则,他们还可以采用哪些其他方法来窃取 cookie? 我尝试了一个简单的警报(document.cookie),但由于 HTTPOnly 而不起作用: HTTP/1.1 200 OK X-Powered-By: Express Content-Security-Policy: default-src 'self';script-src 'self' cdnjs.cloudflare.com;base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests Content-Type: text/html; charset=utf-8 Content-Length: 5924 ETag: W/"1724-zhGBtITbjmwCa+un6GYhGKL+lwo" Set-Cookie: connect.sid=THE COOKIE; Path=/; HttpOnly Date: Sat, 27 Apr 2024 09:29:04 GMT Connection: close 我什至尝试这样做: {{$on.curry.call().eval("var url = '/'; fetch(url).then(response => console.log(response.headers.get('Set-Cookie')))")}} 但是自从 CSP 我得到: angular.js:5930 EvalError:拒绝将字符串评估为 JavaScript,因为“unsafe-eval”不是以下内容安全策略指令中允许的脚本源:“script-src 注意:攻击者显然不允许更改服务器代码!他只能访问输入字段! 在这种情况下,攻击者无法从cookie中获取价值。 因为,HttpOnly 已激活。 这个活动是对的。 如果你成功执行JavaScriptalert(),你应该降级Web浏览器并重新攻击。

回答 1 投票 0

Yii2:如何验证表单/模型输入中的XSS(跨站脚本)?

Yii2 支持使用 helper class\yii\helpers\HtmlPurifier 对显示数据进行 XSS(跨站点脚本)验证,但这仅验证和清理像这样的输出代码 回声

回答 2 投票 0

警告:清理不安全的样式值 url

我想在 Angular 2 应用程序的组件模板中设置 DIV 的背景图像。然而,我不断在控制台中收到以下警告,但没有达到预期的效果...我不确定...

回答 10 投票 0

如何修复 ASP.NET Core MVC 中的跨站脚本 (XSS) 漏洞

我的 ASP.NET MVC 代码中有以下代码。 安全评估工具已报告跨站脚本 (XSS) 漏洞 返回新的 JsonResult(new { 响应 = sresponse, clientdata = ...

回答 1 投票 0

NextJS 内容安全策略 (CSP)

我目前正在为使用 Next.js 制作的生产应用程序制定内容安全策略 (CSP)。虽然我找到了使用该框架实施 CSP 的可靠文档,但有...

回答 1 投票 0

允许子域之间的跨站请求,而不更改第二个子域的文件内容

我目前正在尝试包装一个 Web 应用程序 (ConnectWise) 以包含在我公司的中央 Intranet 站点中。大多数情况下,这是一个相当简单的过程;创建一个包含页面,...

回答 3 投票 0

如果某些属性包含这些值,如何在 Spring Boot 中清理请求正文

如果作为值存在,是否有任何库可以对这些进行编码,例如。可以是 html 属性、js 事件、脚本、评估为 true 的表达式吗?尽管它应该转义诸如“>50000&

回答 1 投票 0

var_dump 或 print_r 和 html 编码

","","b","i","你好"); 打印_r($x); 回显“”; var_dump($x); 在 html 源中输出这个! 大批 ( [0] => <?php $x = array("<b>","<i>","b","i","<h1>hello</h1>"); print_r ($x); echo "<hr>"; var_dump ($x); 将其输出到 html 源代码中! Array ( [0] => <b> [1] => <i> [2] => b [3] => i [4] => <h1>hello</h1> ) <hr>array(5) { [0]=> string(3) "<b>" [1]=> string(3) "<i>" [2]=> string(1) "b" [3]=> string(1) "i" [4]=> string(14) "<h1>hello</h1>" } 显然,我可能会因此受到 XSS 攻击! 如何确保数组值经过 html 编码? 虽然这个问题有一个公认的答案,但我认为 David Morrow 的答案是最好/最简单/最实用的(使用 print_r true 标志): echo "<pre>".htmlentities(print_r($some_array, true))."</pre>"; 尽管如此,这是另一种使用输出缓冲的解决方案: <?php ob_start(); print_r($some_array); $buffer = ob_get_clean(); echo "<pre>".htmlentities($buffer)."</pre>"; ?> 我发现knittl的代码不起作用。我必须进行一些小更改才能使其正常工作,如下所示: array_walk_recursive($inputarray, function(&$v) { $v = htmlspecialchars($v); }); 现在这在 PHP5.3+ 中工作得很好 或者您可以将 print_r 保存到字符串中,然后使用设置为 true 的第二个参数对其进行转义。 $arr = array('<script>alert("hey");</script>'); $str = print_r($arr, true); echo htmlentities($str); 输出: Array ( [0] => <script>alert("hey");</script> ) 脚本未执行 这个 PHP 手册注释中描述了一个对我有用的函数。 他替换var_dump的函数实现为: function htmlvardump() { ob_start(); $var = func_get_args(); call_user_func_array('var_dump', $var); echo htmlentities(ob_get_clean()); } 这在 PHP 5.3+ 中对我有用。 (请注意,原始来源中有一个拼写错误)。 一个简单的解决方案是使用 array_walk_recursive: array_walk_recursive($inputarray, function(&$v) { $v = htmlspecialchars($v); }); echo <pre>; echo htmlspecialchars(print_r($key['value'], true)); echo '</pre>'; 我使用此代码从无sql数据库输出数组值(包含adsense代码)。 感谢 Knittl,这就是我的想法。 按照我想要的方式工作! <?php $x = array("tag1" => "<b>","tag2" => "<i>","tag3" => "b","tag4" => "i","tag5" => "<h1>hello</h1>"); echo "<hr><pre>"; blp_print_r ($x); echo "<hr>"; print_r($x); echo "</pre><hr>"; /* outputs this in the browser normal view new one... Array ( ['tag1'] => <b> ['tag2'] => <i> ['tag3'] => b ['tag4'] => i ['tag5'] => <h1>hello</h1> ) traditional one... Array ( [tag1] => [tag2] => [tag3] => b [tag4] => i [tag5] => hello ) */ function blp_print_r($inputarray){ echo "Array\n(\n"; echo "<blockquote>"; array_walk($inputarray,"html_encoder"); echo "</blockquote>"; echo ")"; } function html_encoder($current_val,$current_key){ echo "['" , htmlentities($current_key, ENT_QUOTES, "UTF-8") , "']", " => "; echo htmlentities($current_val, ENT_QUOTES, "UTF-8") , "\n"; } ?> 我发现这个页面非常有帮助,但我确实将函数修改为递归,walker 处理函数在回显键后检查值处的数组,然后回调该数组上的原始函数。我认为这使它成为真正的“递归 htmlentity 函数”,因此有了新名称...... function htmlentities_print_r( $inputarray ) { echo "<pre>" ; array_walk( $inputarray , "html_encoder" ) ; echo "</pre>"; } function html_encoder($current_val,$current_key){ echo "['" , htmlentities($current_key, ENT_QUOTES, "UTF-8") , "']", " => "; if ( is_array( $current_val ) ) { blp_print_r( $current_val ) ; } else { echo htmlentities($current_val, ENT_QUOTES, "UTF-8") , "\n"; } } 确实, print_r 为 true 的解决方案是最简单的解决方案。但我会这么做: $ret = htmlentities( print_r( $some_array, true ) ) $ret = str_replace( array("\n"), array('<br>'), $ret ); printf( "<br>Result is: <br>%s<br>", $ret ); 但这取决于你们所有人。

回答 9 投票 0

如何修复JSP页面中checkmarx反射的XSS攻击?

在下面的 JSP 页面中,Checkmax 显示了反射型 XSS 攻击,因为我在 JavaScript 源代码中使用 ${pageContext.reqest.contextPath} 变量。我尝试过使用 <p>在下面的 JSP 页面中,Checkmax 显示了反射型 XSS 攻击,因为我在 JavaScript 源中使用 <strong>${pageContext.reqest.contextPath}</strong> 变量。我尝试过使用<pre><code>&lt;script type=&#34;text/javascript&#34; src=&#34; &lt;c:url value=&#34;${pageContext.request.contextPath}/js/viewone.js&#34; /&gt;&#34;&gt; </code></pre>,但没有成功。</p> <pre><code>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34; &#34;https://www.w3.org/TR/html4/loose.dtd&#34;&gt; &lt;%@ page language=&#34;java&#34; contentType=&#34;text/html; charset=ISO-8859-1&#34; pageEncoding=&#34;ISO-8859-1&#34;%&gt; &lt;%@ taglib prefix=&#34;c&#34; uri=&#34;http://java.sun.com/jsp/jstl/core&#34; %&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=ISO-8859-1&#34;&gt; &lt;title&gt;jsp page&lt;/title&gt; &lt;script type=&#34;text/javascript&#34; src=&#34;${pageContext.reqest.contextPath}/js/viewone.js&#34;&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;h3&gt;all contents goes here &lt;/h3&gt; &lt;br&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>如果有人能帮助解决这个问题,我将非常感激。我在 stackoverflow 中搜索了很多解决方案,但没有帮助。</p> </question> <answer tick="false" vote="1"> <p>就您而言,我认为这是 CheckMarx 误报,因为 <pre><code>request.contextPath</code></pre> 不是用户输入。无论如何,如果你必须修复它,我的经验是你必须使用 CheckMarx“识别”的一些库/方法来逃避 <pre><code>pageContext.reqest.contextPath</code></pre>。</p> <p>例如在我的例子中,我使用了 <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html" rel="nofollow noreferrer">StringEscapeUtils.escapeHtml</a> 并且 CheckMarx 对此很满意。只需确保您的 <pre><code>pageContext.reqest.contextPath</code></pre> 中没有任何 html 实体,例如“&”、“">”、...</p> </answer> </body></html>

回答 0 投票 0

在身份验证之前设置会话令牌会导致安全问题吗?

我创建了一个网站登录页面,其工作方式如下: 用户加载网站后,服务器会设置一个随机的 26 个字符的字母数字令牌 cookie。 (这个cookie设置为HTTPOnly=true,...

回答 1 投票 0

xss 与 Laravel 5.1

我正在使用 laravel 5.1 我使用此代码将帖子保存到数据库 Auth::User()->posts()->save(Blog::create($request->all())); 当我使用此代码显示帖子时,我想要一些文本和图像......

回答 3 投票 0

使用 img 标签加载不受信任的 SVG 时出现 XSS

使用img标签加载不受信任的SVG文件是否存在XSS威胁? 如: 我读到大多数浏览器都禁用通过 th 加载的 svg 文件中的脚本...

回答 3 投票 0

我正在尝试消毒,但不起作用

我试图在将 html 字符串发送到数据库之前对其进行清理,我正在使用 sanitize-html npm 包,但它不起作用 if (注释内容) { const resultContent = 清理(noteContent); ...

回答 1 投票 0

位置图XSS攻击

我在 Drupal 工作,我有一个带有输入字段的页面来搜索您的位置。现在,有可能进行 XSS 攻击,我正在尝试使用消毒功能来修复它,但它不起作用......

回答 1 投票 0

为什么checkmarx使用DOMPurify后没有通过XSS漏洞?

我正在使用 Checkmarx 扫描项目中的漏洞,但无法在 JS 文件中使用 DOMPurify 清除 XSS 漏洞。 示例代码: 函数purifyDOM(标签){ var dom_purify = DOMPurify.

回答 1 投票 0

如何为 JavaScript XSS 测试创建“不安全”环境

我正在学习 XSS 安全性以及如何预防它。为此,我想创建有漏洞的代码,然后看看如何添加安全措施来修复它。 我创建了一个接受

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.