2016-12-22 1 views
0

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

  1. Есть ли потенциальная уязвимость, где любой человек, непосредственно вызывать www.mywebsite.com/get_content.php?abc, таким образом, вызывая функцию внутри?

  2. Кроме того, мой текущий метод кодирования достаточен? Пожалуйста, предоставьте наилучшие рекомендации для веб-сайта электронной коммерции.

Я действительно новичок в PHP и хотел бы реализовать в нем безопасность.

product.php < -достижима через навигационной панели

<?php 
    include 'start_session.php'; 
?> 
<html> 
<head> 
</head> 
<body> 
<div class="container"> 
    <?php 
     include 'get_content.php'; 
    ?> 
</div> 
</body> 
</html> 

start_session.php < -A PHP в product.php. Повторяющиеся через другой страницу

<?php 
    session_start(); 
?> 

get_content.php < -A PHP страницы только для product.php для удобства чтения и сохранение

<?php 
function abc(){ 
    //do something 
} 

if((isset($_SESSION['user_id']))){ 
    //connect db and get content 
} 
?> 

ответ

1

Для наилучшей практики, попробуйте использовать такую ​​структуру, как Laravel или Yii2. Затем при необходимости внедрите систему аутентификации.

Для создания собственной системы аутентификации вы хотите иметь сеанс с user_id для зарегистрированных пользователей, а затем создать проверку вверху каждой зарегистрированной страницы пользователя, которая проверяет идентификатор пользователя сеанса, а если нет set будет перенаправляться на страницу входа в систему.

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

if(!isset($_SESSION['users_id'])){ 
//redirect to login page and exit script 
header('Location: /login.php'); 
exit; 
} 
+0

В моем случае мне нужно добавить if (isset ($ _ SESSION ['user_id'])) {} else {// перенаправить на index.php} на каждой странице, включая Product.php и get_content.php ?? И то и другое? –

+0

Я поместил все свои функции на две разные страницы. Одна страница для публичных функций и две для тех, которые входят в систему для пользователей.Затем я просто добавляю проверку сеанса для пользователя, зарегистрированного во втором. Мне просто нужно следить за правильной настройкой правильной страницы. –

+0

Просто проверьте, не вошли ли они в систему, а затем перенаправляйтесь на страницу входа с помощью заголовка («Местоположение: /login.php»); Выход; – Illuminati

1

Сначала вы будете хотеть, чтобы вызвать start_session(); в файле get_content.php

<?php 
start_session(); 
function abc(){ 
    //do something 
} 

if((isset($_SESSION['user_id']))){ 
    //connect db and get content 
} 
?> 

Затем в вашем сценарии входа при входе пользователя в систему добавить некоторые переменные в сессии, которые говорят ваши скрипты пользователь регистрируется на сайте. Это безопасный метод основной, но ни дает представление

$_SESSION['user_logged_in'] = true; 

Затем измените файл get_content.php на что-то вроде этого

<?php 
start_session(); 
if ($_SESSION['user_logged_in'] == true) { 
    function abc(){ 
     //do something 
    } 

    if((isset($_SESSION['user_id']))){ 
     //connect db and get content 
    } 
} else { 
    //redirect user to the login screen 
} 
?> 

Если пользователь не вошел в систему, они не могут получить доступ к скриптов

+0

Я думаю, что ваш $ _SESSION ['user_logged_in'] похож на мой $ _SESSION ['user_id'], за исключением того, что я храню в нем идентификатор пользователя (id из базы данных), и вы просто проверяете boolean. Я прав? –

+0

yup Я просто показал очень простой метод. Я обычно храню '$ _SESSION ['user_id']', а затем звоню в БД, чтобы проверить, совпадают ли они. –

+0

if (! Isset ($ _ SESSION ['users_id'])) { // перенаправлять на страницу входа и выходить из сценария } Старайтесь избегать огромных областей, если это не нужно. – Illuminati

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

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