Commit graph

69 commits

Author SHA1 Message Date
Kijin Sung
60465fb2db Fix various warnings in PHP 8.0 2021-01-28 22:32:56 +09:00
Kijin Sung
8c161bc28d Various fixes to improve PHP 8.0 compatibility
- XmlParser 클래스가 PHP 내장 클래스가 되어버려서 XeXmlParser로 변경
- 함수나 파라미터의 형태가 맞지 않아서 치명적인 오류 나는 곳 수정
- undefined 변수 및 배열 키 다수 수정 (치명적인 오류는 아님)
- 계속 수정중...
2020-10-31 00:25:26 +09:00
Kijin Sung
3e18f2d6ba Add session_start() delay and all query time to debug data 2020-10-30 15:52:52 +09:00
Kijin Sung
4aba149425 Resend the session cookie periodically to prevent early logout
서버단에는 세션 쿠키가 살아 있는데 클라이언트단에서 먼저 만료되지 않도록
일정한 시간 간격으로 세션 쿠키를 재전송해 주도록 한다.
특정한 환경에서 로그인이 풀리는 빈도를 줄이는 데 도움이 될 수 있다.
2020-10-30 01:34:01 +09:00
Kijin Sung
786c9c9b8c Replace some usages of getModel(), getController(), etc. in the Rhymix Framework 2020-05-18 21:51:36 +09:00
Kijin Sung
ae36419ee7 Remove temporary fix for session domain
2020년 3월 한때 develop 브랜치에서 세션 도메인이 잘못 지정되었던 문제를
우회하기 위해 삽입했던 임시 코드를 삭제 또는 주석처리함.

문제가 있던 당시에 develop 브랜치로 업데이트했던 일부 사이트 외에는
필요하지 않은 코드이므로, master 머지를 앞두고 제거함.

참고: #1264
2020-04-21 22:49:02 +09:00
Kijin Sung
04bb0493c7 Implement SameSite cookie policy
- 세션 쿠키, 세션 보안키 등에 SameSite 속성을 적용할 수 있는 기능 추가
  (시스템 설정 -> 보안 설정)
- 일반적인 사이트는 Lax를 권장함, PG사 연동 오류 등의 경우 None 사용
- None 사용시 크롬 80부터는 SSL 전용 세션으로 지정해야 함
- Rhymix\Framework\Session에서 쿠키 관련 루틴들 정리
- PHP 7.3 이상, 7.2 이하 버전으로 나누어 처리
2020-04-21 22:39:10 +09:00
Kijin Sung
255352df62 Fix #942 SSO error when CSRF token checking is enabled 2020-04-07 23:43:14 +09:00
Kijin Sung
dc9c137243 Fix all functions relying on domain from Session::_getParams() 2020-04-05 14:33:39 +09:00
Kijin Sung
99bab256b3 Regenerate session cookie after removing conflict 2020-04-05 00:43:04 +09:00
Kijin Sung
d0df41d232 Clean conflicting cookies from current host if needed 2020-04-05 00:39:48 +09:00
Kijin Sung
f7c67b54fd Set session domain to null by default 2020-04-04 23:13:09 +09:00
Kijin Sung
03160fe0ca Remove leading dot from session domain consistently 2020-04-04 17:02:18 +09:00
Kijin Sung
95f0caafcc Rename session.override_domains to session.conflict_domains
- 설정 이름을 바꾸어 기존에 설정된 것 무효화
- 도메인 없이 setcookie()하는 부분을 모두 찾아 도메인 지정
2020-03-30 23:02:14 +09:00
Kijin Sung
3ca551e5f2 Fix multidomain not working when domain is IDN 2020-03-26 22:12:33 +09:00
Kijin Sung
a49f2f5f06 Change Context::isAlwaysSSL() to config('session.use_ssl_cookies')
- Main session cookie is httpOnly if use_ssl is true
- SSO cookie is always httpOnly
2018-08-06 01:23:22 +09:00
Min-Soo Kim
d090f402cc Set session cookie as a httpOnly cookie.
PHP Session cookie 를 자바스크립트에서 직접 다루는 것은 코어에서 일어나지 않는 일이기도 하고, 바람직한 작업은 아닌 것 같아서 패치합니다.
2018-07-29 18:40:21 +09:00
Min-Soo Kim
30fd0c428c Improve cookie security; Secure flag
SSL 항상 사용 옵션인 경우 쿠키도 이에 맞추어 SSL 인 경우에만 사용되도록 secure flag 를 추가합니다.
선택적 SSL 인 경우 SSL 이 적용되지 않은 구간에서도 쿠키를 읽을 수 있어야 하므로, 적용하지 않습니다.

이 PR 로 변경되는 내용

- Context 클래스에 checkSslEnforce 메소드 추가
- SSL 항상 사용 옵션일 경우, 가능한 secure 플래그를 달아서 쿠기 굽기
- SSO 쿠키의 경우 javascript 접근이 필요 없을 것으로 예상 ( https://github.com/rhymix/rhymix/pull/1034 ) 되어서 `httpOnly` 플래그도 추가.

안드로이드 웹뷰의 경우 StackOverFlow 의 Reading secure cookies in android WebView 라는 글을 참고하면, 읽어오는 것이 가능하다고 합니다. 주소에 프로토콜을 적지 않을 경우 secure flag 가 달린 쿠키는 정상적으로 읽어오지 않는 듯 하니 안드로이드 웹뷰를 사용하시는 분들은 대응이 필요할 것으로 보입니다.

https: //github.com/rhymix/rhymix/pull/1034 를 실수로 merge 하여서 다시 올립니다.
Co-Authored-By: Kijin Sung <kijin@kijinsung.com>
2018-07-29 12:15:24 +09:00
Min-Soo Kim
b62a1322c9 Revert "Merge branch 'develop' into develop"
This reverts commit ec54bbd415, reversing
changes made to 9b12e0a71c.
2018-07-29 11:54:14 +09:00
Min-Soo Kim
f8edfacde2 Refine secure cookie flag
_use_ssl 대신 site_module_info 를 직접 참조하도록 수정.
함수 이름을 조금 더 자연스럽게 수정.
2018-04-28 11:25:15 +09:00
Min-Soo Kim
c1c9a94623 Improve cookie security; Secure flag
SSL 항상 사용 옵션인 경우 쿠키도 이에 맞추어 SSL 인 경우에만 사용되도록 `secure` flag 를 추가합니다.
선택적 SSL 인 경우 SSL 이 적용되지 않은 구간에서도 쿠키를 읽을 수 있어야 하므로, 적용하지 않습니다.
2018-04-24 19:30:38 +09:00
Kijin Sung
591e9cb270 Revert "Improve cookie secure setting values"
This reverts commit 73da2af393.
2018-04-23 00:43:24 +09:00
Kijin Sung
cfca05c897 Revert "Fix httpOnly flag by mistake.... (#1032)"
This reverts commit 0347bb7053.
2018-04-23 00:42:12 +09:00
Min-Soo Kim
0347bb7053
Fix httpOnly flag by mistake.... (#1032)
73da2af393 fix.
2018-04-23 00:17:26 +09:00
Min-Soo Kim
73da2af393 Improve cookie secure setting values
HTTPS 를 사용하는 상황에 대한 판단을 할 수 있는 상황에서 쿠키의 secure flag 를 달아준다.
2018-04-22 23:58:13 +09:00
Kijin Sung
e3a2c1a6aa Guard more count() calls in common framework classes 2017-12-09 02:49:01 +09:00
Kijin Sung
a3ef122b57 Merge branch 'develop' into pr/csrf-token 2017-03-13 16:35:24 +09:00
Kijin Sung
beee2165fb Update session class to use getDefaultDomainInfo() for SSO 2017-03-13 11:35:37 +09:00
Kijin Sung
a0f2388842 Add Session::getGenericToken() for general-purpose token handling 2017-03-06 11:24:09 +09:00
Kijin Sung
5bd5044126 Improve referer checks in Session::checkSSO() 2017-03-04 22:15:46 +09:00
Kijin Sung
8cf3d7b520 Update SSO mechanism to use new domain system 2017-03-04 22:05:16 +09:00
Kijin Sung
cf01038ce6 Refresh member info when setSessionInfo() is called 2017-03-03 01:05:13 +09:00
Kijin Sung
fbe47e0610 Remove temporary list of override domains in Session class 2017-02-18 22:57:39 +09:00
Kijin Sung
5c8a41a655 Fix PHP warning 2017-02-17 21:38:03 +09:00
Kijin Sung
2582ef2100 More thoroughly delete conflicting cookies 2017-02-17 21:09:57 +09:00
Kijin Sung
64f0d5cb45 Remove Android Chrome from buggy user-agent list 2017-02-17 20:24:13 +09:00
Kijin Sung
51acad706e Remove unnecessary regex replacement 2017-02-17 20:15:56 +09:00
Kijin Sung
50410ec482 Delete conflicting wildcard cookies from subdomain 2017-02-17 19:44:01 +09:00
Kijin Sung
780034d4ee Do not explicitly set the domain for session cookies 2017-02-17 19:33:05 +09:00
Kijin Sung
cbae2c374e Use meta refresh instead of 302 redirect on new session
Attempting to fix missing session cookie in some versions of Android webview and Chrome.
This may or may not be of any use, but why not try?

See https://bugs.chromium.org/p/chromium/issues/detail?id=150066
2017-02-16 11:53:27 +09:00
Kijin Sung
b43c653186 Add options to control session keys and SSL-only attribute 2017-02-14 13:37:30 +09:00
Kijin Sung
dea757cfb7 Do not refresh session keys over POST 2017-02-13 17:49:27 +09:00
Kijin Sung
a6fee16b68 Extend detection of buggy user agents that cannot handle session keys 2017-02-13 17:28:04 +09:00
Kijin Sung
9c96dc04bc Remove debugging code 2017-02-13 16:54:25 +09:00
Kijin Sung
aeb42891b0 Do not check security keys if session was started on Android webview 2017-02-13 16:53:30 +09:00
Kijin Sung
ba925150a3 Quash www subdomain to prevent duplicate sessions 2017-02-13 13:55:47 +09:00
Kijin Sung
4a4612938a Show warning when a session is discarded due to invalid keys 2017-02-12 23:12:53 +09:00
Kijin Sung
1a0e49dcfb Change method for storing and caching session validity information 2017-02-12 23:00:53 +09:00
Kijin Sung
9884bbb3b8 Fix inconsistent whitespace 2017-02-11 21:55:01 +09:00
Kijin Sung
31623842ba Fix logout bug in admin module 2017-02-11 21:41:21 +09:00