不好意思,如果我听起来有点愚蠢,但是这件事让我对核心感到困惑,我一直在网上疯狂搜索没有最终答案,所以我希望有人会对这件事情有所了解。
现在我想创建一个门户网站,我的客户端要求所有内容都应该是AJAX,所以我一直在使用ASP.NET AJAX 4和客户端网站模板和Web服务,当然,JASON结果的性能非常好,但我的网络服务代码将是公开的,因为任何人都可以使用JAVA脚本可用的任何东西,所以当我阅读以避免这种情况时我必须:
DOS : 我已经阅读了一些文章,建议你应该使用IP检测进行限制并暂时阻止此请求,但这里有一些我担心的事情
会话HighJacking : 这是可怕的我仍然不知道当你使用ASP.NET成员资格时会发生这种情况,我认为这是一个非常可靠的会员制度! 黑客是否能够通过这种方法窃取某些人?
一种隐藏代码或加密代码的方法: 我想我在这里自欺欺人,因为我已经提到如果它是公开的java脚本那么它对所有人都公开,但我的客户不希望人们看到代码编写逻辑和功能。
隐藏Webserivce: 就像你使用fiddler一样,你可以在RAW数据中看到例如www.mysite.com/toparticles/getTopArticles(10)的路径,这让我的客户端感到害怕,我试图在webconfig中禁用WSDL和文档,但这只会阻止直接访问该文件,没有更多或我错了!有没有办法隐藏Web服务的路径?
所以我最关心的是防止锤击我的任何网络服务并尽可能地隐藏我的代码。
所以我喜欢偏执,因为在前端我主要是要拉数据但是我可以再次给用户选择保存例如他在数据库中的小部件首选项等等...而且它不会通过SSL因此上述安全威胁是有效的。
我希望有人也能分享他在这件事上的经验, 提前谢谢。
答案 0 :(得分:1)
网络上公开的任何功能都将在网络上曝光。即使您使用带有回发的纯ASP.NET,嗅探器也可以看到流量并模仿回发,Ajax只是将其带到逻辑极端。 Web服务(大多数情况下)就像任何其他get / post系统一样(RESTful与否)。
您可以使用一些方法来保护您的网络服务免受未经授权的访问,但实际上这些是完全相同您要为保护任何其他网站所做的事情(asp.net,传统网站)等等。)
网上有很多关于如何保护您网站的文章,这些文章同样适用于AJAX,Web服务等。
如果您真的担心公开公开您的网络服务,您可以使用自己的自定义反向代理来隐藏客户网络中的服务,并仅将代理公开给外部世界。然后,您可以保护服务,以便只通过代理访问它们,并在您认为相关的代理上提供适当的安全性。通过这种方式,所有流量都来自您指定的服务器,并且受到窥探的限制(在合理程度上)。总的来说,虽然我认为这可能会过度杀死,特别是对于门户网站。
与客户讨论的一件事是将webservices作为可销售产品用于集成商的追加销售价值。换句话说,将安全性设计到Web服务中并仅使用门户作为如何将它们放在一起的示例。一个明显的例子是SharePoint,它实际上是Web服务和流程的集合,而网站实际上只是为了方便,SharePoint的强大功能在服务的互操作中。
有关您的安全问题的更具体的答案,SO上有很多帖子以及涵盖您每个特定点的网站。