- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
请告诉我,Silverlight 商业应用程序是安全的吗?
据我所知,用户可以从加载应用程序的本地计算机缓存中获取 .xap 文件,或者如果知道文件名和位置(它是用 HTML 代码编写的),则直接获取 - 只需键入它在浏览器的地址栏中,文件将被下载。 (问题一:正常吗?或者是某些特定主机的设置可以拒绝直接下载?)
最有趣的是,用户一旦下载网页,文件系统中就有一个.xap文件。现在 问题 2:用户是否可以打开(我的意思是反编译)这个 xap 文件并因此获得大量数据,包括检查用户的特定角色等?在代码中,我定期检查是否存在具有特定角色的授权用户。根据这一点,它可能由不同的内容提供。 p.s.当然,我知道服务器端通过属性来检查角色,对此没有发言权。另外,我使用 MEF 模块化,并且对于模块之间的通信,我使用了具有通信接口(interface)的全局库项目。 模块之间传递的信息是否可以被窃取?
下一步。 web.config 文件包含一些应用程序设置,还有一个带有登录密码信息的数据库连接字符串。还有问题3:web.config,存储这样的数据是否足够安全?
最后一个问题 - SSL 连接。我知道,我需要付费才能使用它。总之,问题 4:SSL 如何保护应用程序和包含数据(在业务应用程序中)?
最佳答案
问题 1. xap 文件必须可供最终用户访问,因此我认为您无法阻止经过身份验证的用户从服务器获取它。即使它不可用,用户也可以在他们的浏览器缓存中找到它。
问题 2a。是的,用户可以反编译 xap。它只是一个 zip 文件。重命名为 zip,提取内容,使用 Reflector 等查看。尝试使用 Silverlight Spy,您还可以看到一些有趣的东西。您可以在程序集上使用混淆工具,这是一种有用的威慑力量,但即便如此,也可能被拥有足够资源/精力的人反编译。
问题 2b。我认为有可能看到“信息在模块之间传递”,因为可以使用 WinDbg 调试 Silverlight 应用程序。再次强调,混淆至少有助于阻止不经意的反省。
问题 3。是的,web.config 应该是安全的,除非您特意公开它。
问题 4。SSL 不会阻止上面列出的 xap 文件的任何内省(introspection)问题,但会阻止人们嗅探流量。您将遇到的唯一问题是如何减轻中间人攻击(代理替换其自己的证书)。有一些方法可以缓解这种情况,但我不知道最佳实践是什么。
根据您提出的问题,您应该降低以下风险。想象一下,用户连接到您的 SL 应用程序,登录,然后您从服务器获取他们的“角色”。如果他们反编译了你的 xap,并发现他们需要处于“管理员”角色才能打开对所有内容的访问,他们可以在 SL 应用程序和你的服务器之间放置一个代理并修改响应,以便 SL 应用程序认为他们处于“管理员”角色。这是中间人攻击,最终用户试图破解系统。即使您使用的是 SSL,这也是可能的,因为代理将使用自己的证书,并且最终用户可以将代理的证书添加到他们受信任的证书存储中。
我一直没能在客户端妥善解决上述风险。我通过使用混淆并向请求/响应添加自定义 header (实际上是一个带有隐藏私钥的校验和来加密校验和)来让黑客难以为继。但是,如果最终用户设法对 xap 进行反混淆/反编译,理论上他们将能够找到私钥并查看我的加密算法,因此能够在更改上述“角色”后替换为新的校验和示例。
总而言之,我得出的结论是无法正确保护客户端。如果您认为风险足够,最好在服务器上复制授权。
例如,如果要求用户必须是'admin'角色才能查看'customers',那么如果用户是'admin'角色,我会在客户端显示'customers'屏幕.但是,在服务器上,当 SL 客户端调用服务来获取“客户”数据时,我还会检查当前经过身份验证的用户是否有权查看数据(而不是查看屏幕)。
关于银光。安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113259/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!