关于Javascript注入的问题

2024-01-22

我一直在 asp.net mvc 学习网站上阅读有关 JavaScript 注入的内容,这真是令人大开眼界。

我什至从未意识到/想过有人使用 JavaScript 来进行一些奇怪的屁股注入攻击。

然而,它给我留下了一些悬而未决的问题。

First

什么时候使用 html.encode?就像您仅在要显示该用户或其他用户提交的信息时才使用它吗?

或者我用它来做所有事情。就像我有用户提交的表单一样,这些信息永远不会显示给任何用户,我应该仍然使用 html.encode 吗?

我该怎么做,就像我不知道如何将 html.encode 标签放入 Html.TextBox() 中。

Second

假设我的网站上有一个丰富的 html 编辑器,会发生什么情况。用户可以使用它并使内容变得大胆等等。现在我想通过标签向用户显示信息。我无法对其进行 Html.Encode,因为所有粗体和内容都不会被渲染。

但我不能让它保持原样,因为什么会阻止用户添加一些 Javascript 攻击呢?

那么我该怎么办呢?使用正则表达式过滤掉所有标签?

Third

您还可以使用另一种名为“AntiforgeryToken”的标签,您什么时候会使用这个标签?

Thanks

Edit

几乎每个人都说使用“白名单”和“黑名单”,我将如何编写此列表并将其与传入值进行比较(C# 中的示例会很好)?


好问题!

  1. 对于第一个答案,我会考虑寻找here https://stackoverflow.com/questions/53728/will-html-encoding-prevent-all-kinds-of-xss-attacks在之前提出的问题中。正如答案所讨论的,使用 HTML 编码并不能完全保护您免受所有 XSS 攻击。为了帮助解决这个问题,您应该考虑使用微软网络保护库 http://www.codeplex.com/AntiXSS (AntiXSS http://nuget.org/packages/AntiXSS特别是),可从 Microsoft 获得。

  2. 正如已经提到的,使用允许的标签列表是最好的做法,而其他标签则被删除。

  3. AntiforgeryToken 令牌可以防止请求伪造 (CSRF),因为它为用户提供一个 cookie,该 cookie 在发布页面时根据呈现的表单字段进行验证。据我所知,这没有理由意味着您不能在所有形式中使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Javascript注入的问题 的相关文章

随机推荐

  • gprof 没有输出

    我正在尝试使用 gprof 来分析我正在开发的一些数字代码 但 gprof 似乎无法从我的程序中收集数据 这是我的命令行 g Wall O3 g pg o fftw test fftw test cpp lfftw3 lfftw3 thre
  • 蓝牙适配器不会停止扫描 BLE 设备

    在我的应用程序中 我有开始和停止按钮 当用户按下开始时 我调用 startScan 方法 bluetoothAdapter getBluetoothLeScanner startScan getLeScanCallback 当用户按停止时
  • 如何循环遍历数据库的表?

    我试图使用以下代码循环数据库的表 但出现错误java lang UnsupportedOperationException 我什至尝试过cfloop query and other attributes出现错误复杂值无法转换为简单值 谁能告
  • Lua 无法计算 math.abs(29.7 - 30) <= 0.3 [重复]

    这个问题在这里已经有答案了 今天早上我在我的 Lua 脚本中发现了一个错误 这看起来很奇怪 这次评估怎么会失败呢 示例可以在以下位置进行测试here http www lua org cgi bin demo 第一个例子 if math a
  • 为什么 Golang 强制大括号不在下一行?

    correct if true 不正确 if true 为什么要强制执行这种样式 它与语言规范有关 还是只是因为他们更喜欢一种样式而不是另一种样式 为什么有大括号但没有分号 为什么我不能将左大括号放在下一行 Go 使用大括号进行语句分组 这
  • 格式化numpy数组中的浮点数[重复]

    这个问题在这里已经有答案了 如果我有一个像这样的 numpy 数组 2 15295647e 01 8 12531501e 00 3 97113829e 00 1 00777250e 01 如何移动小数点并格式化数字 这样我最终会得到一个像这
  • 如何将 fgetcsv 与字符串一起使用[重复]

    这个问题在这里已经有答案了 如何使用fgetcsv其中输入是字符串而不是资源 如何将字符串转换为资源 fgetcsv需要文件句柄资源 str 1981 2992 19191 n392 488 299 n some ntext 199 222
  • 无法拉伸内部 StackPanel

    使用下面的设置 我可以将窗口的整个宽度着色为紫色 内部堆叠面板为黄绿色 并移至左侧
  • 在 Rails 3.2 中禁用解释

    是否可以通过配置全局禁用 Rails 3 2 中的新解释功能 我正在使用 activerecord sqlserver adapter 3 2 1 并且 gem 的解释 显示计划 部分似乎存在一些错误 引用自http weblog ruby
  • 从 C# 以编程方式创建文件到 Onedrive?

    我想从 C 直接创建 doc docx pptx 或 excel 文件到我的 Onedrive 帐户 我已经尝试过这个 但它对我不起作用 有人知道我做错了什么吗 谢谢 public async Task
  • 是否可以部署独立的 .NET Framework 应用程序?

    我正在开发一个使用 Net Framework 的 C Net 应用程序 但当用户在其计算机上安装该应用程序时遇到问题 他们中的一些人只是不知道如何安装 Net Framework 我正在寻找这个问题的解决方案 并且我发现了 Net Cor
  • 如何使用变量而不是文件来让任何命令写入?

    我在用着curl cookie jar
  • Python 中的 RAII:__del__ 有什么意义?

    乍一看 好像是Python的 del 特殊方法提供了与 C 中析构函数几乎相同的优点 但根据Python文档 https docs python org 3 4 reference datamodel html https docs pyt
  • 在 Nexus 上使用 nuget 代理时,dotnet 恢复失败

    我在内部网络的 Nexus v 3 9 0 01 上有一个 nuget 代理 我自己还没有填充本地 Nexus 存储库 并且不知道它是如何完成的或是否出现任何问题 但是 我可以手动上传新包 构建在 Bamboo 代理上进行 无法连接到公共存
  • 如何将 Scala 脚本拆分为多个文件

    作为脚本语言 Scala 是否有某种 include 指令 或者有没有办法从其他脚本启动脚本 The scala命令有 load filename命令以交互方式加载 Scala 文件 或者 scala命令的 i filename参数可用于预
  • Android 中的 Viewpager 底部有固定选项卡,每个选项卡中有图标和文本

    我想创建以下布局 一个带有 viewpager 的活动以及一个选项卡 该选项卡保留在活动的底部以指示用户位于 4 个片段中的哪一个 并且所选选项卡通过 活动颜色 突出显示 我花了一些时间在网上查看各种资源来添加此选项卡 http devel
  • 更好地使用验证或离开事件来验证文本框数据?

    在为 VB NET 文本框编写验证逻辑时 最好使用哪个事件处理程序 证实 or Leave 据我了解 它们是同时发生的 然而 根据这篇文章 MSDN Control Leave 事件 http msdn microsoft com en u
  • CSS 网格。隐藏未使用的区域

    我有基于已知元素构建的网格模板区域 但并非所有元素都可以从数据库中获取 如果我没有从数据库中获取某些内容 那么我不会渲染 html 元素 并且会得到一个带有间隙的空 虚线 行 请参阅附图 空行位于蓝色框下方 是否可以隐藏未使用的区域或消除其
  • 如何使用 avx 指令将 float 向量转换为短整型?

    基本上我如何使用 AVX2 内在函数编写与此等效的内容 我们在这里假设result in float属于类型 m256 while result属于类型short int or short int 8 for i 0 i lt 8 i re
  • 关于Javascript注入的问题

    我一直在 asp net mvc 学习网站上阅读有关 JavaScript 注入的内容 这真是令人大开眼界 我什至从未意识到 想过有人使用 JavaScript 来进行一些奇怪的屁股注入攻击 然而 它给我留下了一些悬而未决的问题 First