1

在 VB.NET Web 应用程序中防止 javascript 注入的最佳方法是什么?是否有某种方法可以在页面加载事件中禁用 javascript?

最近,我们的 vb.net 产品的部分安全计划是简单地禁用特定用户无法使用的页面上的按钮。然而,我告诉那个想到打字的人

javascript:alert(document.getElementById("Button1").disabled="")

在地址栏中将重新启用该按钮。我确信其他人以前遇到过这样的问题,所以任何帮助表示赞赏。谢谢!

更新: 除了验证用户输入,我怎样才能保护网站不被地址栏玩弄?

4

5 回答 5

12

您对应用程序的客户端行为所做的任何更改都是肤浅的,根本不安全。你不应该依赖这些。它们很好地阻止了 99% 的用户,但绕过它们却很容易。您应该在调用操作时检查用户是否对服务器端的操作具有正确的权限,这样如果有人决定自己重新启用按钮,他们将无法执行按钮的任何用途做。你无法控制别人可以用 javascript 对页面做什么,所以你永远不应该相信来自客户端的任何东西。

对更新的回应:你不能以任何实际的方式,这正是问题所在。一旦网站在他们的浏览器中,它就是免费的,他们可以尝试一下。这就是为什么您的程序应该每次都验证服务器端的所有内容。

于 2009-03-16T19:32:34.997 回答
7

要考虑的最重要的项目是对用户输入进行 html 编码。如果用户输入 <script> 它将被转换为 <script> 等等

更新:如果期望来自 url / 查询字符串的输入,请使用极端措施验证数据。如果可能,将收到的数据列入白名单。当列入白名单时,您确保只有您认为正确和安全的内容才是可行的提交。

永远不要相信用户的输入。

于 2009-03-16T19:31:05.157 回答
2

始终验证用户输入。

于 2009-03-16T19:31:14.547 回答
2

永远不要相信来自客户的数据。始终在您可以控制的服务器端验证数据和权限。请记住,用户(或任何其他应用程序)可以向您发送他们想要的任何数据。

于 2009-03-16T19:33:48.190 回答
1

不管你做什么来通过javascript锁定界面,你的数据总是可以以某种方式被操纵。有多种工具,例如fiddler,可用于修改或重新创建回发/请求。

即使您找到了锁定事物的方法,如果您的数据对攻击者足够重要,那么您也处于军备竞赛中。最可行的选择是验证您的输入服务器端。

于 2009-03-16T19:36:52.177 回答