首页 > 解决方案 > 从 asp.net 自动登录到 wordpress

问题描述

我有一个 ASP.NET 项目,其中包含 WordPress 的 URL 的用户名和密码。如何在 ASP.NET 中创建重定向方法,以便它直接登录到 WordPress 网站的管理面板?

标签: asp.netasp.net-mvc

解决方案


如果您以简单的方式执行此操作,您肯定会被网络犯罪分子窃取您的 WordPress 密码。

尽管如此,它还是值得解释的。

在您View Source...的 wordpress 管理员登录页面上执行操作,并在 HTML 中查找表单定义。去掉很多额外的东西,它看起来像这样。

<form name="loginform" id="loginform" a
    ction="https://wordpress.example.net/wp-login.php" method="post">
        <input type="text" name="log" id="user_login" class="input" value="" size="20" />
        <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" />
</form>

因此,您可以尝试这样的重定向字符串:

https://wordpress.example.com/wp-login.php?name=admin&pwd=foobar

使用 GET 请求提供用户名和密码。但它不起作用:WordPress 坚持用户名和密码出现在 POST 请求参数中。因此,您需要让您的 asp.net 代码写出一个包含最小表单和一些 Javascript 以发布该表单的最小网页。

该表单页面将在写入 Web 浏览器时看起来像这样。

<html><head></head><body>
<form name="loginform" id="loginform" 
      action="https://wordpress.example.net/wp-login.php"
      method="post">
        <input type="text" name="log" value="USERNAME" />
        <input type="password" name="pwd" value="PASSWORD" size="20" />
</form>
<script type="text/javascript">
    document.getElementById('loginform').submit();
</script>
</body></html>

看看这是如何工作的?您可以创建最简单的 html 表单,其中包含值(用于 USERNAME 和 PASSWORD)。您可以使用最简单的 Javascript 代码立即发布表单。当您将该表单传递给用户的浏览器时,浏览器会立即将其发布到 WordPress,并且您会在浏览器中获得 WordPress 控制面板。

但这是可怕的安全性:网络犯罪分子要找出您的 WordPress 密码所需要做的就是关闭 Javascript,然后在这个小网页上查看源代码。如果您的 asp.net 应用程序或 WordPress 实例可以从公共 Internet 访问,请要这样做。如果这样做,您可能在几个小时内失去对 WordPress 网站的控制。

您真正想要的是某种联合身份验证。Active Directory 联合服务、SAML 和 OAuth 是执行此操作的三种方法。所有方法都相当安全。都有 WordPress 插件。所有这些都需要大量的系统管理技能来安装和配置。


推荐阅读