반응형

브라우저 보안정책 강화로 인해 iframe 으로 php 외 다른 url 등을 불러왔을 때, set cookie의 기본 samesite 정책이 Lax 로 지정되어 iframe 내의 페이지가 set cookie 를 기본적으로 하지 못하도록 차단됩니다. 그래서 iframe 으로 사이트를 불러왔을때 로그인이 풀리는 현상이 있는데요.

 

php 에서 로그인 처리시, 혹은 session_start() 시에 아래 코드를 추가하면 해결이 가능합니다.

session_start();
setcookie("PHPSESSID", session_id(), time() + 3600, "/; samesite=None; Secure");

 

session_start() 다음에 생성된 session_id 를 PHPSESSID setcookie를 다시 해주는건데요. samesite 를 None 옵션을 주면 iframe 내에서 불러졌더라도 쿠키에 셋업되어 다른 페이지 이동시에 세션이 유지되게 됩니다.

반응형
반응형

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

 

PHP 인증 시도시 prompt 에서 입력한 암호값이 전달되지 않을 경우, 

위 값을 .htacess 에 넣어주면 된다.

반응형
반응형

php7.4-fpm 환경에서 $_SERVER['PHP_AUTH_USER'] 등의 서버 환경 변수 값이 식별되지 않는 문제가 발생하였다.

아래 .htaccess 에 내용을 추가하여 해결하였다.

 

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
반응형
반응형

XE 를 최신 버전으로 업데이트 하는 과정에서, 또는 php 7 >= 환경에 XE를 서버이전하고자 할때 오류가 발생한다.

제일 간단한 방법은 로그 창을 터미널로 띄워놓고, Object 오류가 발생하는 php 파일들을 찾아가 Object 를 BaseObject 로 수정해주면 된다.

 

예를 들어,

return new Object(); 

return new BaseObject();

로 바꿔주면 된다.

 

또는 extends Object { 로 위에 적혀있을때도 있는데,

이때도 extends BaseObject { 로 수정해주면 된다.

 

 

반응형
반응형

서버에서 제공하고 있는 phpMyAdmin 이 제대로 동작하지 않아, 최신버전으로 업데이트 해주었습니다.

업데이트 후 접속해보니 blowfish_secret에 32 bytes로 작성을 해주어야 하는데, 그렇지 않다 (not correct) 경고가 나오고 있어 수정하였습니다.

 

phpMyAdmin이 설치된 경로에 들어가 config.inc.php를 열어 $cfg['blowfish_secret'] 를 아래 사이트에서 생성하여 붙여 넣으면 경고가 깔끔히 사라집니다.

 

https://www.motorsportdiesel.com/tools/blowfish-salt/pma/

 

phpMyAdmin Blowfish Secret Generator

This tool generates a secure 32 character Blowfish Secret for your phpMyAdmin config file located at / usr / share / phpmyadmin / config.inc.php (on Linux). here . -->

www.motorsportdiesel.com

 

반응형
반응형

mcrypt_* 이 PHP 7.1 에서 deprecated 이 되었고, PHP7.2 에서 mcrypt_* 이 삭제되어 사용이 불가능 해졌다.

대신 openssl encrypt 를 사용하면 된다. 


private static $key = "key_pass";
private static $cipher = "aes-256-cbc";

public static function encrypt($buffer){
$ivlen = openssl_cipher_iv_length(self::$cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
return openssl_encrypt($buffer, self::$cipher, self::$key, $options=0, $iv, $tag);
}

public static function decrypt($buffer){
$ivlen = openssl_cipher_iv_length(self::$cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
return openssl_decrypt($buffer, self::$cipher, self::$key, $options=0, $iv, $tag);
}


반응형
반응형

VC9 : IIS 용

[Thread Safe 와 Non Thread Safe]

 

우선 윈도우용 PHP는 항상 Thread Safe 버전으로 나왔었습니다.
이유는 윈도우가 멀티쓰레드 방식인데 PHP 는 멀티프로세스 방식으로 개발 되었기 때문이죠.
참고로 리눅스나 유닉스는 원래 멀티프로세스 방식이었기에 문제가 되지 않았습니다.

PHP를 IIS와 연동하기 위해 CGI 또는 ISAPI 방식으로 연동을 합니다.
그런데 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에
멀티쓰레드 방식으로 개발된 ISAPI 로 연동하였을 경우 서버가 다운되는 현상이 나타났습니다.

그래서 안정적인 방법으로 CGI 방식을 사용하긴 하지만 이 것 역시 퍼포먼스 측면에서 너무 느리다는게 문제가 되었죠.
이 퍼포먼스 문제를 개선한 것이 Non Thread Safe 버전이라고 생각하시면 되겠습니다…^^

그럼 결론적으로 아래와 같은 조합이라 생각할 수 있겠죠? ^^a

 

Windows + IIS(ISAPI) : VC9 Thread Safe 버전
Windows + IIS(CGI or FastCGI) : VC9 Non Thread Safe 버전
Windows + Apache(MPM worker) : VC6 Thread Safe 버전
Windows + Apache(MPM prefork) : VC6 Non Thread Safe 버전

 

출처 : http://auctionpro.co.kr/?p=773

반응형
반응형

Just discovered how super simple it was to add some gz compression when for example providing JSON data from PHP.

All you need is regular output buffering with the ob_gzhandler as output callback.

// Fetch some data
$data = get_data();

// Turn on output buffering with the gzhandler
ob_start('ob_gzhandler');

// Output as normal
echo json_encode($data);

The cool thing is that it actually looks at what the browser accepts before doing anything.

Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept (“gzip”, “deflate” or none at all) and will return its output accordingly. All browsers are supported since it’s up to the browser to send the correct header saying that it accepts compressed web pages.

Tried adding it for a text field with timezone auto-completing for example, and without this handler:

Content-Length    5517
Content-Type      application/json

With this handler:

Content-Encoding  gzip
Vary              Accept-Encoding
Content-Length    1775
Content-Type      application/json

Do like! 😆

반응형

+ Recent posts