使用参数从JavaScript调用控制器操作是否安全?

时间:2017-08-10 11:20:14

标签: javascript asp.net-mvc security

我想知道是否安全从javascript文件调用控制器操作并将(通过敏感)参数传递给它。

假设最终用户对某事做了赌注,然后将赌注的价值发送给控制人员。

投注本身会输入到页面上的文本框中,javascript会将该值作为参数发送给按钮点击事件上的操作。

在调用动作之前,用户可以在单击按钮后操纵他/她的下注值吗?

由于

3 个答案:

答案 0 :(得分:1)

它可以被操纵,但只要你不打算发送,就应该没有问题。控制器的价格将被处理。

想一想:有人订购比萨饼,比萨的价格从javascript发送到控制器。这不是一个好方法,因为价格可以设置为0而你没有钱。在这种情况下,您将比萨饼的ID或名称传递给控制器​​,并从数据库中获取价格。

在你的情况下,这不是问题,因为如果他输入10然后将其操纵为20或者他直接输入20就没有区别。在这两种情况下你都会得到20的数字。

如果您正在处理控制器中的所有数据,那么您应该是安全的。如果您将数据传递给控制器​​,请检查它是否有问题,如果它不是用户输入的值。

答案 1 :(得分:1)

今天的大多数现代网站都是由javascript驱动的,所以是的,从javascript文件调用控制器动作是安全的。但是,您必须确保已采取某些安全措施。

  1. HTTP over SSL。 (加密敏感日期和防止中间人攻击)
  2. 防伪令牌(防止跨站点请求伪造)
  3. 始终验证客户端输入。在执行任何操作之前,请确保您具有服务器端验证(数据注释等)并且模型状态有效(ModelState.IsValid)。
  4. 我知道asp.net mvc对Cross网站脚本攻击有一定程度的内置保护,但如果你将它们显示回网页,请确保客户端输入始终是HTML编码的。

答案 2 :(得分:0)

  

我想知道从javascript文件调用控制器操作并将(通过敏感)参数传递给它是否安全。

"保存"就......而言...?如果连接是SSL,您当然可以假设这些值将从客户端安全地传输到服务器。但是"安全"在稳定性方面取决于您的应用。

  

参数可以在发送到控制器之前进行操作吗?

当然可以。但参数"敏感"?在没有客户/用户知道的情况下,您无法从客户端发送到服务器。