0

这行得通......但它错了吗?特别是它本质上是不安全的吗?

我错过了什么?我真的需要服务模块来让我做一些简单的宁静(和安全)drupal<->电话应用程序通信吗?

这个想法是这些网址将通过电话应用程序发送(编辑:并且将使用 POST 而不是GET)

/**
 * Simple restish switchboard reading
 * This is not proper rest, but provide a quick and dirty framework.
 */
function _rest_go() {
  // login https://example.com/rest/go?mode=login&name=(yourusername)&pass=(yourpasword)
  // logout https://example.com/rest/go?mode=logout
  // logout https://example.com/rest/go?mode=me
  switch ($_REQUEST['mode']) {
    case 'login':
      $params = array(
          'name'   => $_REQUEST['name'],
          'pass'   => $_REQUEST['pass'],
          );
      $user = user_authenticate($params);
      $result = $user;
      break;
    case 'logout':
      require_once(drupal_get_path('module', 'user') . '/user.pages.inc');
      user_logout();
      $result = 'logged out';
      break;
    case 'me':
      $result = rest::myCiviID();
      break;
  }
  drupal_json($result);
  exit();
}
4

2 回答 2

1

如果您在网络浏览器中尝试,这些 url 将有效,但如果 cookie 信息不可用,则可能无法通过电话应用程序。

在这种情况下,登录 api 应该在成功登录应用程序时返回用户会话 ID,并且在注销请求中,您需要传递此会话 ID 以注销该特定用户。

于 2013-01-31T21:30:15.453 回答
0

一点点的偏执永远不会伤害。只要您不验证/清理您的数据,您就会面临可能的安全问题。该问题的严重程度取决于您如何使用从用户那里收到的输入。它的范围可以从您网站的一些小破坏/风格破坏到像破坏您的数据库这样的大麻烦。

经验法则是:永远不要相信用户输入!始终对其进行验证和消毒。PHP/Drupal 提供了许多方法来确保您操作的数据是安全的。

我建议您开始研究 PHP 在验证/卫生方面必须提供的功能。据我了解,您正在尝试构建一个轻量级的替代品来替代您认为可能是笨重的模块。通过使用 PHP,您不必引导 Drupal 就可以访问它的一些清理内容的功能(例如check_plaincheck_url等等)。

所以请继续阅读:过滤器功能

于 2013-02-05T12:52:20.767 回答