[FIX] URL 입력 검증 로직 개선#37
Merged
Merged
Conversation
minsoo0506
approved these changes
May 17, 2026
minsoo0506
left a comment
There was a problem hiding this comment.
고생하셨습니다! 아래 코멘트에 대한 수정할 필요는 없을 것 같은데 인지만 하고 계시면 될 것 같습니다!
| } finally { | ||
| setIsChecking(false); | ||
| } | ||
| setError(''); |
There was a problem hiding this comment.
naver.com 같은 입력을 허용했지만, 여기서 원본 trimmed를 그대로 넘기면 안전 결과 화면의 즉시 URL 접속이 Linking.openURL(url)을 bare domain으로 호출하게 됩니다. React Native의 외부 열기는 https://naver.com처럼 스킴이 있는 URL이 필요해서, 새로 허용한 입력은 검사 후 접속 액션이 실패합니다.
백엔드 전달값은 원본으로 유지하더라도, 실제 열기용 값은 보정해야 할 것 같습니다! 추후에 백엔드에서 넘어오는 값 중에 final_url 혹은 finalUrl 값이 있을텐데 그 값을 사용하면 될 것 같습니다.
그냥 인지만 하고 있어주세요!!
Contributor
Author
There was a problem hiding this comment.
확인했습니다!
현재 add-link.tsx에서는 백엔드 전달을 고려해서 입력 원본을 유지하고 있는데, 말씀해주신 것처럼 naver.com 같은 bare domain은 결과 화면의 Linking.openURL(url)에서 바로 열 수 없는 점 인지했습니다.
추후 백엔드 연동 시 finalUrl/final_url 값을 열기용 URL로 사용하거나, 실제 접속 액션에서는 스킴이 포함된 URL로 보정하는 방향으로 처리하겠습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #36
개요
URL 입력 화면에서
www.naver.com,naver.com처럼http://,https://프로토콜이 없는 정상적인 도메인 주소도 올바른 URL 형식으로 판단되도록 검증 로직을 개선했습니다.기존에는 입력값에
http://또는https://가 없으면 즉시 실패 처리하고, 이후Linking.canOpenURL()로 실제 열기 가능 여부까지 확인하고 있었습니다. 이 방식은 스킴이 없는 정상 도메인을 잘못 거부하고, 프론트에서 URL을 열 수 있는지까지 판단하게 되어 원본 URL을 그대로 백엔드에 넘기기로 한 방향과 맞지 않았습니다.이번 작업에서는 사용자가 입력한 주소를 원본으로 유지하고,
https://를 붙인 값은 검증용 내부 후보로만 사용하도록 변경했습니다. 따라서naver.com입력 시 검증 단계에서는https://naver.com형태로 파싱 가능 여부를 확인하지만, 스캔 화면/백엔드 전달값과 실제 접속 기준 주소는 사용자가 입력한naver.com그대로 유지됩니다.또한
네이버.com처럼 한글/비ASCII 문자가 포함된 도메인이new URL()에서 punycode로 변환되어 통과하는 문제를 막기 위해 원본 hostname 기준의 ASCII 도메인 검증을 추가했습니다.주요 구현 내용
http://,https://가 없는 도메인도 URL 후보로 판단https://보정값은 검증 함수 내부에서만 사용Linking.canOpenURL()검증 제거https://자동 보정 제거Linking.openURL()에 전달하도록 변경동작 방식
예시 1:
예시 2:
즉,
https://를 붙이는 처리는 URL 형식 검증을 위한 임시 처리이며, 백엔드에 넘기거나 실제 접속할 때 사용하는 값은 사용자가 입력한 주소를 기준으로 합니다.파일별 역할
app/(tabs)/(home)/add-link.tsx: URL 입력 형식 검증 로직 개선,Linking.canOpenURL()기반 검증 제거, 원본 URL 전달 유지components/ui/card-link.tsx: 저장 링크 실행 시 URL 자동 보정 제거, 원본 URL 기반 외부 브라우저 실행 처리해결한 이슈 목록
www.naver.com,naver.com처럼 스킴이 없는 정상 도메인을 URL 형식으로 인정http://,https://가 이미 포함된 URL은 기존처럼 허용https://보정값은 검증 내부에서만 사용하도록 처리Linking.canOpenURL()의존 제거ㅎㅇ.com,한글.com등 비ASCII 도메인 차단a..com,-naver.com,naver-.com,naver.c등 잘못된 도메인 형식 차단체크 사항
npm run lint통과clerk-build.log는 커밋에서 제외참고
허용되는 입력:
www.naver.comnaver.comhttps://www.naver.comhttp://www.naver.comsub.domain.co.kr거부되는 입력:
네이버.com한글.comnavernaver.ca..com-naver.comnaver-.comhttps://