2011-04-27 4 views
1

내 .htaccess 파일에서 업데이트를 할 때 웹 사이트를 켜기/끄기로 전환하기 위해 변수 (SetEnv)를 사용합니다. 안전합니까? 아니면 PHP 스크립트를 통해 .htaccess 파일을 수정할 수 있습니까? PHP에서 .htaccess 파일을 수정해도 안전합니까?

더 구체적으로, 나는/언급 할 필요가 그 라인 유엔의 주석 :

#RewriteCond %{REMOTE_ADDR} !LOCALIPHERE 
#RewriteCond %{REQUEST_URI} !^/Site/maintenance.htm 
#RewriteCond %{REQUEST_URI} !^/Site/styles/style.css 
#RewriteCond %{REQUEST_URI} !^/Site/includes/jquery-1.4.4.min.js 
#RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|png|gif|swf)$ 
#RewriteRule ^.* /Site/maintenance.htm [L] 

당신에게 감사를

편집 :

안전의 나의 정의는 다음과 같습니다 내가 좋아하는 것 .htaccess 파일이 PHP 스크립트에 의해 열리고 웹 사이트가 동시에 방문되는 경우 사이트가 어떻게 작동하는지 알 수 있습니다.

+1

'file_put_contents (".htaccess", $ settings, LOCK_EX)'또는 더 나은 아직 rename()을 쓰는 원자 단위를 사용해야합니다. 따라서 Apache는 파일이 완전히 작성되었을 때만 다시 읽습니다. – mario

+0

@mario +1, 거기에 좋은 팁과 또한 아주 좋은 정보. 파일이 잠겨 있으면 PHP를 실행하기 전에 .htaccess 파일을 진행해야하기 때문에 파일이 릴리스 될 때까지 모든 연결이 보류 중입니다. 내가 맞습니까? – Cybrix

+1

새로운 .htaccess가 완벽해야한다는 것을 기억하십시오. Apache는 깨진 .htaccess의 잘못된 지시문으로 인해 500 개의 내부 오류가 발생하기 때문에 모든 구문 오류와 전체 사이트가 종료됩니다. –

답변

6

파일이 PHP 프로세스에서 쓰기 가능하면 다른 모든 파일처럼 수정할 수 있습니다.

그러나 코드를 주석 처리/주석 처리하는 대신을 사용하여 env var.

+0

그레이트 솔루션. 가능하다면 간단한 예제를 얻을 수 있을까요? – Cybrix

+0

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond를 참조하십시오. "variable은 모든 환경 변수가 될 수있는"'% {ENV : variable}'도 가능합니다. 아파치 서버 프로세스에서 getenv()를 통해 내부 아파치 구조체와 (발견되지 않았다면) 위로 올라간다. " – ThiefMaster

0

당신이 알고있는 한, 당신이하고있는 일은 안전합니다. 그러나 파일을 수동으로 편집하고 스크립트에서이 상황을 반영하지 않으면 쉽게 파기 할 수 있습니다.

+0

내 질문을 편집했습니다. 나는 이제 내가 "안전하다"라고 정의하는 것을 정의하고있다. – Cybrix

1

신뢰할 수있는 경우에는 구문 오류를 발생시키지 않고 "수정하기가 안전합니다"라고 평가할 것입니다. 따라서 .htaccess 파일을 수정하는 500 오류의 원인의 가능성을 감소, 검사 및 간단한 문자열 조작을 사용하여 대체 할 안전합니다

#<off>#RewriteCond %{RE... 

: 난 당신이 더 구체적인 의견 토큰을 사용하는 것이 좋습니다 것이라고 달성합니다. 사용 설정/사용 중지 할 설정 유형이 다른 경우 여러 개의 특정 토큰을 사용하십시오.

보안 자체에 관해서는 세계에 쓰기 가능하도록하는 것이 세계에 쓰기 가능한 PHP 스크립트 또는 구성 파일을 가지고 있다는 것과 동일한 의미가 있습니다.

관련 문제