安全问题-web浏览器控件作为UI和客户端应用程序中包含的所有逻辑



如果这不符合"问题类型"政策,我很抱歉,尽管我认为这在一定程度上是可以回答的。

我们使用:C#.NET4WebKit.NETMySQL

我们正在开发一个以WebKit.NET为UI的C#.NET4(一个带有WebKit浏览器控件的WinForm)。所有HTML都是在应用程序中定义的——唯一从外部提取的是远程MySQL数据库中的内容。

应用程序中的C#现在处理webkit浏览器控件中的所有事件。本质上,它介入某些事件,接受用户输入的值(如果适用)并执行工作。

我认为这是有风险的,因为它不像是连接到外部服务器上的PHP实例——所有类似"服务器"的工作都是在客户端计算机上的应用程序中本地进行的。如果有人能够破坏应用程序(对其进行反向工程?),则会显示整个方法(用户名、密码、表名等)。

在桌面应用程序中,是否存在一个类似合作伙伴的应用程序,它位于服务器上,接受数据,然后代表客户端程序连接到MySQL服务器?

也许我有点偏执,但客户篮子里的鸡蛋让我害怕。

如果你只在客户端设置验证逻辑,那么很容易绕过它。显而易见的例子是只在客户端使用javascript进行验证的网站:禁用javascript,你可以插入任何你想要的东西。

如果你在客户端中硬编码任何连接数据库密码,那么任何人都可以访问你的数据库,如果他们对应用程序进行反向工程的话。数据包嗅探和监视打开的连接也是了解详细信息的好方法。

如果涉及任何类型的用户帐户,我会这样实现:

  1. 用户登录客户端
  2. 客户端将登录凭据发送到服务器应用程序。客户端可以验证输入,但主要是为了帮助用户并加快过程。对服务器使用SSL,否则密码将被拦截。验证证书以确保它是您的服务器,并立即消除中间人攻击
  3. 服务器拒绝所有无效的输入,执行自己的输入验证,并执行您希望它执行的数据库操作,返回结果。通过这种方式,您可以控制数据库访问。它还可能返回会话身份验证,以允许进一步的请求。或者,连接可能只是保持打开状态。我不会让它返回数据库密码以允许直接接口:这可以使用调试工具从正在运行的应用程序中提取
  4. 客户端接受并解析结果,生活继续

相关内容

  • 没有找到相关文章

最新更新