防止JavaScript注入

时间:2009-03-16 19:28:37

标签: javascript vb.net security javascript-injection

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

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

的人

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

地址栏中的

将重新启用该按钮。我确信其他人之前遇到过这样的问题,所以任何帮助都会受到赞赏。谢谢!

更新的 除了验证用户输入外,我如何保护网站不被地址栏中的玩弄?

感谢您的投入!我很感激!

5 个答案:

答案 0 :(得分:12)

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

对更新的回应:您无法以任何实际的方式,这正是问题所在。一旦网站进入他们的浏览器,它就是一个免费的,他们可以自己去做。这就是为什么你的程序每次都要验证服务器端的所有内容。

答案 1 :(得分:7)

要考虑的最重要的项目是html编码用户输入。如果用户输入< script>它会被转换为& lt; script& gt;等

更新:如果需要来自url / querystring的输入,请使用极端措施验证数据。如果可能,白名单列出收到的数据。当列出白色时,您只能确保您认为正确且安全的是可行的提交。

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

答案 2 :(得分:2)

始终验证用户输入。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

通过javascript锁定界面并不重要,您的数据总是可以以某种方式进行操作。有各种工具,例如fiddler,可用于修改或重新创建回发/请求。

即使您找到了解决问题的方法,如果您的数据对攻击者来说足够重要,那么您就会陷入军备竞赛。最可行的选择是验证输入服务器端。