为什么注入javascript代码不是一个好主意

时间:2018-11-03 08:19:58

标签: javascript asp.net security code-injection

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

在我的Web项目中,我有一个名为(MainPage)的页面。在MainPage中,根据查询字符串,最后一个用户可以看到调查编辑表(www.a.com?entity=survey@op=edit)或参数插入表(www.a.com?entity=parameter&op=add)或等等...

上面的查询字符串示例只是示例,因为我对其进行了加密,实际上最后一个用户在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代码注入漏洞?

3 个答案:

答案 0 :(得分:0)

  

我的代码风格有安全性问题吗?

不。在客户端执行的动态代码没有错误。至少从安全角度考虑(您仍应控制其性能)

  

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

不。您不能破坏在客户端上执行动态代码的任何内容。 “动态”代码以与普通js相同的特权在同一沙箱中执行。

  

此样式是否具有javascript代码注入漏洞?

某些人使用术语“ JavaScript Injection Attack”来命名$( userInput ).insertAfter( .. );的副作用-当用户可以从用户输入中运行某些JavaScript时(如果userInput包含<script>...</script>),但是它与动态JS不相关,而与动态HTML有关。

答案 1 :(得分:0)

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处理HTML之类的View时,会变得越来越困难。

答案 2 :(得分:0)

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