Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的ASP.NET代码有多安全?_Asp.net_Javascript_Web Services_Security_Pagemethods - Fatal编程技术网

我的ASP.NET代码有多安全?

我的ASP.NET代码有多安全?,asp.net,javascript,web-services,security,pagemethods,Asp.net,Javascript,Web Services,Security,Pagemethods,我正在开发一个ASP.NET应用程序,它可以与Google Maps交互,并从数据库中检索标记信息。标记信息被拆分为数据库中的表,其中表的名称反映了一个公司(例如CompanyA_MarkerData、CompanyB_MarkerData等)。为了定期使用新的标记数据更新映射,我在JavaScript中使用setTimeout来定期调用我的“UpdateMarkers”JavaScript函数UpdateMarkers'调用一个web服务,该服务执行数据库查询,并将标记列表返回给JavaScr

我正在开发一个ASP.NET应用程序,它可以与Google Maps交互,并从数据库中检索标记信息。标记信息被拆分为数据库中的表,其中表的名称反映了一个公司(例如CompanyA_MarkerData、CompanyB_MarkerData等)。为了定期使用新的标记数据更新映射,我在JavaScript中使用setTimeout来定期调用我的“UpdateMarkers”JavaScript函数UpdateMarkers'调用一个web服务,该服务执行数据库查询,并将标记列表返回给JavaScript,JavaScript反过来更新地图

这种方法的主要问题是,我的web服务要求我将公司名称传递给它,以便它知道要访问数据库中的哪个表。可以想象,这会带来安全风险,因为任何人都可以将不同的公司名称传递给web服务,并且能够从其他公司以及自己的公司检索数据

为了避免这个问题,我正在按如下方式重新构造我的程序:当系统管理员为我的应用程序创建用户时,他们还可以为这个用户分配一个公司ID。公司ID是使用ASP.NET中的配置文件对象存储的。我正在将web服务代码移动到一个具有共享函数的类中,以便它们只能在我的页面中调用(但不能由任何人调用,就像web服务一样)。这些函数仍然需要传递一个公司名称才能传递给它们。但是,JavaScript不会直接调用这些共享函数,而是调用一组页面方法(据我所知,这些方法不像web服务那样是公共的)。然后,这些页面方法将使用Profile对象检索附加到当前登录用户的公司名称,然后调用我的共享数据库函数并将信息返回到JavaScript

我认为第二种方法比第一种更安全,因为我不允许客户端向我的代码传递不同的选项并检索未经授权的数据。服务器端代码计算出需要发送的参数。然而,我想知道是否有更好的方法来做这件事,我错过了

谢谢


--Amr

您所需要的只是一种检查服务器端是否允许用户访问该公司的数据的方法


我假设您正在使用AJAX,因为您说您正在使用Javascript从自己的数据库检索信息。因此,无论您调用哪个服务器端脚本/程序,都要将用户身份验证代码放在其中。

刚刚意识到页面方法需要在VB中声明为共享,并且我无法从共享函数访问概要文件对象。这有点麻烦了…谢谢-我不知道我可以从web服务访问成员对象,但事实证明我可以。这就是路。