2

我有一个安装了 mysql、php 技术的工厂外部托管网站(linux platofmr)。我需要我的 C# 应用程序从网站收集数据。

我的网站上有一个 MYSQL 数据库,我想发送我的用户名和密码以访问一些敏感数据(使用 PHP 脚本)

我目前的设计看起来像这样:

C# 应用程序 POST 到网站上的 login.php 脚本。

例如 mywebsite.com/login.php?username=admin?password= MD5HashedPassword

如果用户名和密码与数据库中的用户名和密码匹配,该脚本会生成一个带有“OK”的空白页面。

现在我认为这对于登录来说可能是安全的,但是如果我希望登录脚本生成包含敏感信息的 XML 数据,我认为这不是一种安全的方式。我这样想对吗?

那我应该往哪个方向走。我的应用程序和网站之间是否应该有某种 PHP 会话。这是一件简单的事情吗?我应该放弃使用 PHP 并使用不同的技术吗?

非常欢迎任何意见和建议。

非常感谢

4

2 回答 2

3

这应该没问题,前提是您的交易满足以下条件:

  1. 对 PHP 页面的 POST 请求发生在 C# 服务器到 PHP 服务器,用户的浏览器执行 POST。如果用户的浏览器向 PHP 服务器执行 POST,那么攻击者可以简单地使用Burp Suite等代理拦截请求并提取散列密码,然后发出额外的恶意请求。

  2. 用户名/密码作为 POST 参数而不是 GET 参数在查询字符串中传递。您使用了以下示例:e.g mywebsite.com/login.php?username=admin?password=MD5HashedPassword在我看来,它就像使用查询字符串的 GET 请求。这是不安全的。

  3. POST 请求仅通过 HTTPS/SSL 而不是常规 HTTP。这将确保通信从 TCP 向下加密。

于 2013-03-23T21:16:04.133 回答
-1

SSL 是保护线路上数据的标准方式。如果您有证书,只需将其加载到您的 Web 服务器(服务器之间的过程不同)并确保您的程序将 https 指定为协议。

您的身份验证系统看起来……不标准。如果您要使用程序化 http 请求,通常不能使用平台的表单身份验证。但是,您应该更喜欢基本或摘要式身份验证,而不是自己动手。在这种情况下,凭据将在标头中传递,而不是作为查询字符串的一部分显式传递。由于您使用的是 SSL,因此基本身份验证是安全的。

于 2013-03-23T14:19:53.507 回答