Skip to content
isdnetworks
Go back

인증 해제 조건 넷

성인 인증이 필요한 상품이 있고 인증하면 원본 이미지가 보인다. 시험 케이스를 보니 인증이 풀리는 조건이 넷으로 잡혀 있었다. 넷을 나란히 놓고 보니 성격이 서로 달랐다.

Table of contents

Open Table of contents

상황 — 성격이 다른 네 조건

로그아웃과 시간 경과와 앱 재실행과 재로그인이 그 넷이었다. 로그아웃은 사용자가 명시적으로 한 행동이고 시간 경과는 저절로 일어난다.

재로그인은 애매했는데 인증을 유지하는 것도 다시 받는 것도 말이 된다. 시험 케이스의 문구만으로는 어느 쪽이 맞는지 갈리지 않았다. 이런 자리를 그대로 두면 확인하는 사람마다 다르게 판정한다.

저장 위치가 동작을 정한다

인증 결과를 MySQL에 두느냐 Android·iOS의 저장소에 두느냐에 따라 재실행 시 동작이 달라진다. 앱 쪽에 두면 지웠다 깔 때 함께 사라지고 MySQL에 두면 유지된다.

네 조건 중 셋이 이 선택으로 결정되고 있었다. 조건을 하나씩 정하는 것이 아니라 저장 위치를 정하면 대부분이 따라온다. 개별 조건을 따지기 전에 그것부터 확인해야 했다.

시간 제한과 검증 방법

시간 유효기간이 있는 이유는 기기를 다른 사람이 쓸 가능성 때문으로 보였다. 인증한 사람과 지금 쓰는 사람이 같다고 보장할 수 없다.

그런데 서버가 NOW()로 시각을 판정하면 기기 시각을 바꾸는 방법으로는 확인이 안 된다. 실제로 시간이 지나기를 기다려야 한다. 오래 걸리는 시험 케이스는 매번 돌릴 수 없어 중요도를 낮게 두게 된다.

한 화면에만 필터가 없었다

성인 상품을 걸러 내는 WHERE가 목록과 검색에는 있는데 장바구니에는 없었다. 담은 시점에 이미 한 번 봤다는 것을 전제한 것으로 보였다.

그러면 인증이 풀린 뒤에도 장바구니에서는 계속 보인다. 의도인지 빠뜨린 것인지 시험 케이스만으로는 알 수 없었다. 예외가 있으면 왜 예외인지 함께 적혀 있어야 했다.

보는 것과 사는 것의 관문

인증이 풀린 뒤에도 보이는 구간이 생기지만 결제 단계에서 다시 막고 있었다. 마지막에 확실한 관문이 하나 있는 구조였다.

관문을 한 곳에 두면 그 앞은 다소 느슨해도 된다. 다만 그 한 곳이 뚫리면 전부 뚫리므로 그 자리는 더 단단해야 한다. 어디에 관문을 둘지가 앞뒤의 엄격함을 함께 정하고 있었다.

정리


Share this post on:

Previous Post
기준 자료가 없으니 화면이 통째로 비었다
Next Post
공유했는지 확인할 수 없었다