PHP Может ли клиент когда-либо устанавливать переменные $ _SESSION?

Существует ли какой-либо сценарий, когда клиент / пользователь / хакер может самостоятельно устанавливать переменные $_SESSION (исключая вредоносное программное обеспечение, запущенное на компьютер-сервер. В основном я имею в виду через браузер)?

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

Чтобы сделать это как можно проще, если я проверяю каждую страницу с помощью чего-то вроде isset($_SESSION['validated']) , безопасно ли это?

Да, если вы присваиваете переменные $_SESSION непосредственно для нефильтрованного ввода.

Это подводит меня к моей точке: НИКОГДА НЕ ДОЛЖЕН ВХОДИТЬ ИЗ ПОЛЬЗОВАТЕЛЯ. КОГДА-ЛИБО

Если вы действительно фильтруете вход, тогда я не вижу, как это можно сделать.

Я не думаю, что переменные $ _SESSION могут быть изменены, если у пользователя нет доступа к серверу, иначе они не могут его изменить, но фильтрация переменных или дезинфекция рекомендуется, если это то, что пользователь вводит.

Я не совсем понимаю вопрос, но этот вопрос объясняет мой способ того, что я думаю, что вы хотите сделать.

Убедитесь, что вы включили jQuery.

Код:

 <html> <head> <title>Tab name</title> <meta charset = "UTF-8" /> <script type = "text/javascript" src = "http://code.jquery.com/jquery-1.1.13.min.js"></script> <script type = "text/javascript" src = "script.js"></script> </head> <body> </body> </html> 

Затем создайте файл с именем addsession.php .

Код для addsession.php :

 <?php session_start(); ?> <?php if(isset($_POST["name"])){ $name = $_POST["name"]; } else { print '<p style = "color: red; font-weight: bold;">Name not defined!</p>' . "\n"; $name = "unknownsessionvariable"; } if(isset($_POST["value"])){ $value = $_POST["value"]; } else { $value = ""; } $_SESSION[name] = value; ?> 

Код для script.js :

 function session(name, value){ $.post(addsession.php, {"name" : name, "value" : value}); window.location.reload(); // This line maybe should be here depending on what you are doing. } $(document).ready(function(){ session("sessvar", "supervalue"); }); 

Пример фрагмента кода:

 function session(name, value){ $.post("http://www.eastonwerling.com/addsession.php", {"name" : name, "value" : value}); //window.location.reload(); $(document).ready(function(){ session("sessvar", "supervalue"); }); 
 <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <p>This example depends on www.eastonwerling.com (my website).</p> 

Да, это возможно. Читайте о отравлении сеанса и еще одной довольно распространенной проблеме безопасности. Фиксация сеанса в Википедии или Google – в Интернете полно статей об этом.