тип контента json, безопасный для работы с личными данными? - PullRequest
0 голосов
/ 11 февраля 2012

Итак, я прочитал интересную статью некоторое время назад, и я хотел бы получить некоторую обратную связь от сообщества CI о том, как вы будете иметь дело с личными данными, такими как адреса электронной почты, разрешения любых пользовательских данных, которые считаются частными.

Публичные данные в порядке, так как я могу контролировать конечный вывод, так что это меньше проблем с безопасностью.

Ниже это способ, которым я бы извлекал все общедоступные данные, напримермои пользователи, действительно то, что я хочу знать, насколько безопасно использовать тот же подход для личных данных под контроллером администратора (вывод - json);

Ajax-запрос для интерфейса (users.js), который мне нравитсячтобы создать новый js-файл для каждого модуля в целях разработки, а затем скомпилировать.

(function($){

    var userObj = {
        init: function(){

            if(document.getElementById(id)){
                this.populateUserData();
            }
        },
        populateUserData : function(){
            //for demonstration purposes let build output into a table
            $.ajax({
                url : BASE_PATH + 'users/get_active_users',
                dataType : 'json',
                success : function(callback){

                    if(callback.status === 'ok')
                    {
                        var output = "";
                        $.each(callback.users, function(){

                            var $this = this;
                            output += '<tr>'
                            output += '<td>'+$this.firstname+'</td>';
                            output += '<td>'+$this.lastname+'</td>';
                            output += '<td>'+$this.alias+'</td>';
                            output += '<td>'+$this.joined.date+'</td>';
                            output += '</tr>'

                        });
                        output += "</tr>";
                        $("table#id tbody").append(output);
                    }

                }
            });
        }
    }

    $(function(){
        userObj.init();
    });


})(jQuery);

HTML (позволяет создать несколько фиктивных данных)

<table class="bordered" id="id">
    <thead>
        <tr>
            <th>Firstname</th>
            <th>Lastname</th>
            <th>Alias</th>
            <th>Joined</th>
        </tr>
    </thead>

    <tbody>
        //rendered out via js
    </tbody>
</table>

Запрос контроллера

if (!defined('BASEPATH'))
exit('No direct script access allowed');

class Users extends MY_Controller {

    public function __construct() {parent::__construct();}

    public function get_active_users()
    {
        if($this->input->is_ajax_request())
        {
            //grab all the active users(php-activerecord)
            $users = User::get_all_active_users();

            //render the ouput content type as json
            $this->output
                  ->set_content_type('application/json')
                  ->set_output(json_encode($users));
        }
        else
        {
            show_404();
        }
    }

Модель Activerecord

if (!defined('BASEPATH'))
exit('No direct script access allowed');

class User extends ActiveRecord\Model {

     public static function get_all_active_users()
     {
         $users = self::find('all', array('conditions' => array('active=?', (int) 1)));

         if($users)
         {
             foreach($users as $user){

                $date = explode('-', date('F jS, Y - G:i', strtotime($user->created_at)));

                $ret[] = array(
                    'joined'    =>  array(
                        'date'  =>  $date[0],
                        'time'  =>  $date[1]
                    ),
                    'firstname' =>  $user->firstname,
                    'lastname'  =>  $user->lastname,
                    'alias' =>  $user->alias
                );
             }

             return array(
                'status'    =>  'ok',
                'users' =>  $ret
             );
         }
         else
         {
             //do something else
         }
     }
}

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Неважно, какой тип контента вы используете (JSON, XML и т. Д.).Вы должны отправлять личные данные только в том случае, если они зашифрованы.Даже если ваш контроллер защищен для определенных пользователей, это все равно не имеет значения.Отправляйте личные данные только по сети, если они зашифрованы.

1 голос
/ 11 февраля 2012

С точки зрения безопасности использование JSON ничем не отличается от любой другой реализации на основе AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...