我有一个由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());
现在我想知道的是,
答案 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代码实现。 从您的问题来看,我看不到重大的安全问题。然而, 如果您不熟悉漏洞或安全性,则不建议使用代码样式。
这是一些原因。
您已将URL公开。 即使您对它进行编码,有些躲闪的人也会尝试对其进行破解。例如,黑客可以通过不同的URL对其进行解码。 我喜欢隐藏它,不要给他们机会。您也可以将URL用作搜索引擎的可读性更高的资源。
如果不使用框架,则可能需要实现参数过滤器以防止注入攻击(SQL,JS)。这需要时间。
很难维护代码。 由于您的代码是与ASP和JS混合使用的,因此,当您的代码较大时,尤其是在ASP代码中使用JS处理HTML之类的View时,会变得越来越困难。
答案 2 :(得分:0)
如果您正在加密客户端,则用户可能会在加密之前实际看到发送到应用程序的内容。有监视客户端活动的工具(例如YSlow),具有技术专长的恶意用户可以使用它来检测可能的前端漏洞。请记住,永远不要信任用户的输入,允许用户在您的应用中传递注入代码绝不是一个好选择。