我已经安装了运行mysql,php技术的磨机外部托管网站(linux platofmr)。我要求我的C#应用程序从网站收集数据。
我的网站上有一个MYSQL数据库,我想发送用户名和密码以访问一些敏感数据(使用PHP脚本)
我目前的设计看起来像这样:
C#应用程序POST到网站上的login.php脚本。
例如mywebsite.com/login.php?username=admin?password= MD5HashedPassword
该脚本生成一个空白页面,其中包含" OK"如果用户名和密码与数据库中的用户名和密码匹配。
现在我认为只是登录可能是安全的,但如果我希望登录脚本生成包含敏感信息的XML数据,我不相信它是一种安全的方式。正在做。我在想这个是正确的吗?
那我应该走哪条路。我的应用程序和网站之间是否应该有某种PHP会话?这是一件简单易事的事吗?我应该放弃使用PHP并使用不同的技术吗?
非常欢迎任何意见和建议。
非常感谢
答案 0 :(得分:3)
如果您的交易的以下条件属实,那么这应该没问题:
对PHP页面的POST请求从C#服务器发送到PHP服务器,用户的浏览器不执行POST。如果用户的浏览器对PHP服务器执行POST,则攻击者可以使用Burp Suite等代理拦截请求,并提取散列密码,然后发出其他恶意请求。
用户名/密码作为POST参数传递,而不是查询字符串中的GET参数。您使用了以下示例:e.g mywebsite.com/login.php?username=admin?password=MD5HashedPassword
,它使用查询字符串看起来像GET请求。这不安全。
POST请求仅通过HTTPS / SSL而不是常规HTTP。这将确保通信从TCP向下加密。
答案 1 :(得分:-1)
SSL是保护线路上数据的标准方法。如果您有证书,只需将其加载到您的Web服务器(进程因服务器而异),并确保您的程序将https指定为协议。
您的身份验证系统看起来......非标准。如果您要使用程序化的http请求,通常无法使用平台的表单身份验证。但是,您应该更喜欢基本身份验证或摘要身份验证,而不是自己推送。在这种情况下,凭据将在标头中传递,而不是作为查询字符串的一部分显式传递。由于您使用的是SSL,因此基本身份验证是安全的。