为什么注入javascript代码是个坏主意



我有一个由asp.net 开发的web项目

在我的网络项目中,我有一个名为(MainPage(的页面。在主页中,根据查询字符串,最后一个用户可以看到调查编辑表单(www.a.com?实体=survey@op=编辑(或参数插入表单(www.a.com?entity=参数&op=添加(等…

上面的查询字符串示例只是示例,因为我对它们进行了加密,实际上最后一个用户在url 上看到了一些复杂的单词

例如:www.a.com?saşlfas571=sflkmlm11sd&13kjn13=1378183

此外,在MainPage中,我加载了一个名为MainPageJs的javascript,它会根据查询字符串显示正确的js代码。

我正在MainPage.cshtml 中加载MainPageJs

@section scripts{
<script type="text/javascript" src="@CustomUrl.CustomAction("MainPageJS", "Home", new { entity= entityName, op = opName })"></script>

}

下面的代码显示了MainPageJs如何工作

....
string res = "";
if (queryString == "parameter")
{
res = "var a = 1;";
}
if (queryString == "survey")
{
res = "var a = 2;";
}
if (queryString == "user")
{
res = "var a = 3;";
}
return JavaScript(res.ToString()); 

现在我想知道的是,

  1. 我的代码样式有任何安全问题吗
  2. 我的网页有任何安全漏洞吗
  3. 此样式是否存在JavaScript代码注入漏洞

我的代码样式有安全问题吗?

否。在客户端上执行的动态代码没有什么问题。至少从安全的角度来看(你仍然应该控制它的性能(

我的网页是否存在安全漏洞?

否。在客户端执行动态代码时,不能破坏任何内容。"动态"代码在同一个沙箱中执行,具有与普通js相同的权限。

这种风格是否存在javascript代码注入漏洞?

有些人使用术语"JavaScript注入攻击"来命名$( userInput ).insertAfter( .. );的副作用,当用户可以从用户的输入中运行一些JavaScript时(如果userInput包含<script>...</script>(,但它与动态JS无关,它更多的是关于动态HTML。

Does my code style have any security problems?
Does my web page have any security vulnerability?
Does this style have a JavaScript code injection
vulnerability?

这完全取决于您的ASP代码实现从你的问题来看,我看不出有什么大的安全问题。然而如果你不熟悉漏洞或安全性,我不建议你使用代码风格。

以下是一些原因。

  1. 您已将URL公开。即使你对它进行了编码,一些躲避者也会试图破解它。例如,从不同的URL,黑客可以解码它。我宁愿把它藏起来,不给他们机会。您还可以使用URL作为搜索引擎的可读资源。

  2. 如果您不使用框架,您可能需要实现参数过滤器以防止注入攻击(SQL、JS(。这需要时间。

  3. 很难维护代码。由于您的代码与ASP和JS混合在一起,当您的代码更大时,尤其是当您在ASP代码中使用JS处理类似View的HTML时,会变得更加困难。

如果您正在加密客户端,则用户可以在加密应用程序之前实际查看发送到应用程序的内容。有一些工具可以监控客户端活动(如YSlow(,具有技术专长的恶意用户可以使用它来检测可能的前端漏洞。记住永远不要相信用户的输入,允许用户在应用程序中传递注入代码从来都不是一个好选择。

相关内容

  • 没有找到相关文章

最新更新