Asp.net 验证外部站点的登录凭据
我有一个网站,要求用户提供他在不同网站的登录凭据。此站点位于我的服务器外部。比如craigslist.com。在用户向我提供用户名和密码后,我希望能够验证这些凭据对该站点有效,否则我希望让用户知道他错误地输入了外部站点的凭据。我有办法做到这一点吗?我更愿意使用asp.net(vb.net/aspx)解决方案,但我愿意使用其他语言。如果有必要的话,我会想办法让他们交流。当然。一个快速警告:您应该使用一个好的安全模型来保护用户提供给您的这些机密,这是一个不同而复杂的主题。您承担了存储其凭据的责任,尽管数据有望通过存储中的应用程序进行加密,但您的应用程序能够将其解密为明文,这将使您的应用程序承担责任。你可能还想确保你没有破坏远程网站的任何TOS 但对于这个问题,您实际上需要的是打开web请求以模拟用户手动登录其他站点的代码。您将代表您的用户从.NET代码在远程服务器上发布登录表单。编写代码的策略:Asp.net 验证外部站点的登录凭据,asp.net,vb.net,Asp.net,Vb.net,我有一个网站,要求用户提供他在不同网站的登录凭据。此站点位于我的服务器外部。比如craigslist.com。在用户向我提供用户名和密码后,我希望能够验证这些凭据对该站点有效,否则我希望让用户知道他错误地输入了外部站点的凭据。我有办法做到这一点吗?我更愿意使用asp.net(vb.net/aspx)解决方案,但我愿意使用其他语言。如果有必要的话,我会想办法让他们交流。当然。一个快速警告:您应该使用一个好的安全模型来保护用户提供给您的这些机密,这是一个不同而复杂的主题。您承担了存储其凭据的责任,尽
- 在使用已知良好凭据在web浏览器中手动将登录表单发布到远程站点时,请使用类似于的工具检查浏览器发送的web流量李>
- 找出有效请求中需要发布的字段,注意他们可能检查的任何特殊要求(最好使您的编程请求看起来与真正的浏览器请求完全相同:
- 传递所有相同的标题,如User Agent、Accept、Referer、cookie(为了获得额外的积分…可能他们正在寻找一个已建立的会话cookie,您需要在发布前使用初始设置请求进行设置),等等。在帖子中包含浏览器将要发布的所有相同字段…注意浏览器发布的隐藏字段,以及任何特定于请求的字段(这将要求您发出初始HTTP GET请求,让服务器为您提供一些有效字段,然后发出POST请求以发送有效负载).有些表单通过在字段上设置display:none来防止bot…所以当然不要发布这些内容,因为手动用户登录不会这样做(正如您将在Fiddler中看到的)
- 然后查看有效成功登录后的响应:
- 在“成功”页面上找到一些可靠的信息,您可以使用这些信息知道登录成功。例如,您可以搜索用作“成功标记”的特定字符串/HTML片段。您还可以使用HTTP响应的其他特征,如响应代码、发生的重定向等。这完全取决于成功登录与失败登录后远程服务器的行为
- 请记住,远程网站可以随时更改其HTML格式,这可能会破坏您的逻辑。因此,如果可以做出这样的假设,请选择最不可能破坏的策略。
- 为这种可能性做一个很好的计划,就是编写一个“监控”程序,您可以按计划运行该程序,它将测试您用于确定成功登录的逻辑
- 将执行此操作的代码封装在类库中,以便ASP.Net应用程序和监视器程序都可以共享它
- 如果监视器程序无法在远程站点上登录或解释成功登录,请让它向您发出警报(例如电子邮件)。这样,您可以在用户注意到之前立即开始修复它
- 将监视器应用程序作为Windows服务宿主,如果不可能,则作为在任务计划程序中运行的控制台应用程序宿主
- 对远程网站要有礼貌,如果可能的话,每天只运行监视器1-2次。根据您的项目要求,这可能是您应对问题的充足时间
HttpWebRequest
。以下是一些示例,可以帮助您开始使用这些代码: