【发布时间】:2021-02-27 10:56:38
【问题描述】:
在我的应用程序中,在母版页中,我为 JavaScript 变量设置了如下值,
<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Master.master.cs" Inherits="Web.Common.Master" %>
<!DOCTYPE html>
<html>
<head runat="server">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<script type="text/javascript">
var BRANCH_NAME = "<% =BranchName%>";
var USER_ID = "<% =UserId %>";
</script>
</body>
</html>
还有另一个页面来管理(输入)位置详细信息,当用户输入这种(";alert("s");")类型的易受攻击的脚本时,它会在整个应用程序中呈现为弹出窗口。浏览器响应如下,
我该如何处理这种类型的 XSS?输入分支名称时是这个句柄吗?或任何其他方式?请给我解决这个问题的想法。
【问题讨论】:
-
我不了解 ASP,但如果您有用户提供的值并且必须显示该值,则应始终在可视化之前对其进行转义。在这种情况下,假设您希望您的 BRANCH_NAME 仅包含字母、数字和 _,因此您可以添加一个正则表达式,在将 BranchName 变量分配给 BRANCH_NAME 之前修剪其他所有内容。 TLDR;没有什么神奇的方法可以阻止所有 XSS 攻击,因此您应该根据使用用户输入的位置来考虑它。
-
通常您会使用
<%: %>来转义用户可能会注入您的应用程序的<script>标签。但是在这种情况下,您已经这样做了,所以聪明的用户已经知道了您。在这种情况下,使用隐藏字段并在您的 JS 中访问它们,这应该会阻止它。认为用户的每个输入都存在潜在的安全隐患。 -
@SalikRafiq 能否提供示例代码来解释您所说的内容
标签: javascript c# asp.net webforms xss