2013-07-09 2 views
0

Я работаю над CakePHP 2.3 по очень большому проекту, и я собираюсь запустить свой сайт по всему миру.Лучший подход для обеспечения безопасности и управления кодом

У меня есть система входа в мое приложение. Я делюсь своим кодом, потому что хочу убедиться, что я правильно кодирую или нет ..., а также любую проверку на отсутствие каких-либо функций или если какой-либо совет по добавлению чего-то или удалению чего-либо в коде будет очень благодарен. А также комментировать точки зрения безопасности тоже ...
скажите мне некоторые подсказки сделать мой сайт быстрее .. например, как писать быстрые запросы или удалить нежелательные из этого BlaBla

class UsersController extends AppController 
{ 

    public $components = array('Cookie'); 

    public function beforeFilter() 
    { 
     parent::beforeFilter(); 
     App::uses('Utility', 'Utility'); 
     $this->Auth->allow('index'); 
     $this->Security->requireSecure('login'); // for security 

     $this->Auth->authenticate = array(
      'Authenticate.Cookie' => array(
       'fields' => array(
        'username' => 'email', 
        'password' => 'password' 
       ), 
       'userModel' => 'User', 
       'scope' => array(
        'User.active' => 1 
       ) 
      ), 
      'Authenticate.MultiColumn' => array(
       'fields' => array(
        'username' => 'email', 
        'password' => 'password' 
       ), 
       'columns' => array(
        'email', 
        'mobileNo' 
       ), 
       'userModel' => 'User' 
      ) 
     ); 
    } 



public function index() 
{ 
    $this->layout = 'logindefault'; 

    if (!$this->Auth->login() || !$this->Auth->loggedIn()) { 

     $this->redirect(array(
      'controller' => 'users', 
      'action' => 'login' 
     )); 

    } else { 
     $this->redirect(array(
      'controller' => 'users', 
      'action' => 'dashboard' 
     )); 
    } 

} 


public function login() 
{ 

    $this->layout = 'logindefault'; 
    $this->set('title_for_layout', 'Account Login'); 




    if ($this->Auth->login() || $this->Auth->loggedIn()) { 


     $lastLogin = $this->Auth->User('lastLogin'); 

     if ($lastLogin != null) { 
      $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->redirect(array(
       'controller' => 'Userinfo', 
       'action' => 'gettingstarted' 
      )); 

     } 

    } else { 

     if ($this->request->is('post')) { 

      $mobileNo = $this->request->data['User']['email']; 

      $mobileNo = Utility::addPlusToMobileNo($mobileNo); 

      $this->request->data['User']['email'] = $mobileNo; 




      if ($this->Auth->login() || $this->Auth->loggedIn()) { 
       if ($this->Session->check('Auth.User')) { 

        $this->_setCookie($this->Auth->user('idUser')); 

        $lastLogin = $this->Auth->User('lastLogin'); 
        if ($lastLogin != null) { 
         $this->redirect(array(
          'controller' => 'users', 
          'action' => 'dashboard' 
         )); 
        } else { 

         $this->redirect(array(
          'controller' => 'Userinfo', 
          'action' => 'gettingstarted' 
         )); 

        } 
       } 
      } else { 
       $this->Session->setFlash('Incorrect Email/Password Combination'); 
      } 
     } 
    } 
} 



protected function _setCookie($id) 
{ 
    if (!$this->request->data('User.remember_me')) { 
     return false; 
    } 
    $data = array(
     'username' => $this->request->data('User.email'), 
     'password' => $this->request->data('User.password') 
    ); 
    $this->Cookie->write('User', $data, true, '1 week'); 
    return true; 
} 


public function logout() 
{ 
    $this->Cookie->delete('User'); 
    $this->redirect($this->Auth->logout()); 
} 

ответ

0
  • Похоже, что вы» re уже используя SecurityComponent, если вы хотите, чтобы ваше приложение использовало его везде. Для AJAX формы белый список только поля вам нужно, не отключите компонент!
  • Put App :: uses ('Utility', 'Utility'); поверх файла
  • $ mobileNo = Utility :: addPlusToMobileNo ($ mobileNo); должно произойти в модели beforeSave()
  • Если это предполагается использовать во всем мире, я предполагаю, что вы хотите выполнять переводы, это означает, что вызов метода перевода __() setFlash («Неправильное сочетание электронной почты/пароля»);
  • Большая часть кода CAN и должна войти в слой модели
  • Есть ли модульные тесты? Если не добавлять модульные тесты, специально проверяйте проверку данных и ввод ложных данных. Вы хотите ~ 85% + покрытие кода для модульных тестов.
  • Вы не следуете стандартам кодирования CakePHP

Там нет никакого способа, чтобы сказать вам больше, чем это, не будучи в состоянии получить доступ всего кода приложения и делать анализ кода (я мог бы сделать это). Для запросов всегда запрашивайте нужные данные, проверяйте сгенерированные SQL-запросы, используйте DebugKit для проверки времени запроса, чтобы найти медленные запросы и медленно отображаемые страницы.

+0

@thankyou burzum .... я могу отправить вам AppController, если вы скажете ... второй я не получил четвертую точку. 6-й пункт об модульных тестах ... что это значит ... не могли бы вы привести мне пример .. и последнее, что вы говорите, что я не следую стандартам кодирования торта .. как? – mynameisjohn

+0

, а также вы сказали, что приложение использует приложение поверх файла ... где ?? после объявления класса. class UsersController extends AppController {App :: uses ('Утилита', 'Утилита'); но он дает мне ошибку здесь – mynameisjohn

+0

и скажите мне, что, поскольку я загружаю комплект отладки ... так что я хочу знать, когда я делаю свой сайт общедоступным, должен ли я удалить набор отладки тогда ??? – mynameisjohn

 Смежные вопросы

  • Нет связанных вопросов^_^