0

これは機能します...しかし、それは間違っていますか?特にそれは本質的に安全ではありませんか?

私は何が欠けていますか?単純な安らかな (そして安全な) drupal<->phone ap 通信を行うには、サービス モジュールが本当に必要ですか?

アイデアは、これらの URL が電話 ap 経由で送信されることです (編集: GET ではなくPOST を使用します)。

/**
 * 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 は、Web ブラウザーで試す場合は機能しますが、Cookie 情報が利用できない場合、電話アプリを介しては機能しない可能性があります。

その場合、ログイン API は、アプリへのログインが成功したときにユーザー セッション ID を返す必要があり、ログアウト リクエストでは、このセッション ID を渡してその特定のユーザーをログアウトする必要があります。

于 2013-01-31T21:30:15.453 に答える
0

少しのパラノイアは決して痛いものではありません。データを検証/サニタイズしない限り、セキュリティ上の問題にさらされる可能性があります。その問題の深刻度は、ユーザーから受け取った入力をどのように使用しているかによって異なります。それは、サイトの小さな破壊行為やスタイルの破損から、データベースの侵害などの大きな頭痛の種までさまざまです。

経験則は次のとおりです。ユーザー入力を決して信頼しないでください。常に検証し、サニタイズします。PHP/Drupal は、操作するデータが安全であることを確認する方法を多数提供しています。

検証/サニテーションに関して、PHP が提供するものについて調査を開始することをお勧めします。私が理解している限り、あなたはよりかさばるモジュールであると思われるものに代わる軽量の代替品を構築しようとしています。check_plainPHP を使用すると、Drupal をブートストラップして、コンテンツをサニタイズする一部の機能 (例:など)にアクセスする必要がなくなりますcheck_url

それでは、いくつか読んでください:フィルター関数

于 2013-02-05T12:52:20.767 に答える