마이클의 말은 정확합니다. 완전히 막을 수는 없습니다. 실수를 막기 위해 래스터를 사용하여 일부 바의 변경을 방지 할 수 있습니다. EG :
function setSession($k, $v) {
if ($k!='can_access_to_all')
$_SESSION[$k] = $v;
}
그러나 개발자가 래퍼를 사용하지 않고 세션을 직접 변경할 수 있습니다.
당신이 할 수있는 또 다른 일은 끝에 모든 고정 세션을 다시 원래 위치로 설정하는 끝에 포함을 추가하는 것입니다.
//do stuff
//include restoresession.inc
및 restoresession.inc에서
$_SESSION['can_access_to_all'] = 0
이제 그들은 여전히 현재 페이지를 변경할 수 있지만에 그것이 있어야한다 무엇으로 재설정됩니다 리디렉션 할 수 있습니다.
하지만 가장 중요한 질문은 개발자가 특정 파일/설정을 손댈 수없는 이유는 무엇입니까? 클래스와 세션 // UPDATE
, 최고의 당신이 실제로 사용 클래스에 대한 액세스와 세터
class MySettings
{
private $can_access_to_all;
/**
* Construct
*/
final public function __construct()
{
//remove if not needed, or use it to make
$this->can_access_to_all = 0;
}
/**
* handle requests
*/
final public function __get($prop) {
return $this->$prop;
}
/**
* Prevent setting of properties
*/
final public function __set($prop, $val) {
trigger_error("Property cannot be set directly");
}
}
$_SESSION['MySettings'] = new MySettings();
변경하지 말 것을 부탁드립니다. –
오늘 저는 3 명의 개발자가 있습니다. 내일은 10 명이 될 수도 있습니다. 응용 프로그램을 보호해야합니다. :) – Cartha
글쎄, 개발자는 자신의 응용 프로그램을 '보호'하지 않으므로 해커로부터 보호 할 수 있습니다. –