블로그를 위해 Firebase 실시간 데이터베이스 규칙을 안전하게 만드는 방법
블로그는 계획대로 운영되다가 어느 날 Firebase 팀으로부터 데이터베이스에 대해 설정한 규칙이 안전하지 않다는 이메일을 받았습니다.
나는 혼란스러웠고, 그래서 나는 일의 진상을 파악하려고 할 때 보통 하던 대로 했다.
마침내 몇 주 동안 매일 이메일을 보낸 후 중단되었습니다. 어떤 데이터베이스 설정과 규칙이 최종적으로 보안을 유지했는지 살펴보겠습니다.
내 데이터베이스에 저장되는 유일한 정보는 게시물에 관한 것입니다. 다음과 같이 보입니다.
Firebase's security rules에 대한 설명서를 살펴본 경우 읽기/쓰기 설정에 익숙할 수 있습니다. 내 웹사이트는 어떤 종류의 사용자로부터 데이터를 수집하거나 인증하지 않는 공개 블로그입니다. 따라서 읽기 요청만 허용하면 되지만 콘솔에서 새 json 파일을 업로드하여 새 블로그 게시물 추가를 유지하므로 모든 쓰기 요청이 거부됩니다.
따라서 내 규칙은 다음과 같습니다.
분명히 my
auth.uid
가 회색으로 표시됩니다. 내가 그 ID를 어디서 얻었는지 궁금할 것입니다. Firebase 콘솔에서 내 프로젝트를 열고 왼쪽 메뉴에서 '인증'을 클릭한 다음 한 명의 사용자를 설정했습니다. '사용자 UID' 열에서 auth.uid
를 찾을 수 있습니다. 그러나 언급했듯이 내 웹사이트에 대한 인증이 설정되어 있지 않으므로 이 단계를 수행하지 않고도 얻을 수 있습니다. 계속 읽으면 가장 큰 보안 단계는 이auth.uid
가 아니라 내 규칙에 posts
를 추가한 것입니다. 두 가지를 모두 시도하고 어떤 일이 일어나는지 확인하십시오.그런 다음 내
useEffect()
후크에서 데이터베이스에서 데이터를 요청하는 방식도 변경해야 한다는 점에 유의하는 것이 중요합니다. 슬러그를 요청할 때 /
뒤에 'posts'라는 단어를 추가하기만 하면 되었습니다.useEffect(() => {
db.ref()
.child(`/posts/${slug}`)
// ...rest of code
}, []);
내 useEffect() 후크의 나머지 부분과 이 모든 것이 함께 작동하여 데이터를 검색하고 배치하는 방법을 보려면 에서 내 게시물을 확인하십시오.
이전에는
.child('/${slug}')
를 하고 있었습니다. Firebase 지원팀과 대화할 때 데이터베이스의 루트 노드에서 요청하는 것이 보안 취약점을 유발한다는 정보를 받았습니다. 따라서 루트 수준과 게시물 사이에 'posts'라는 다른 노드를 추가하여 이를 보호했습니다. 전에는 규칙이나 데이터베이스에 posts
노드가 없었고 모든 게시물 개체로 바로 이동했습니다.그리고 그게 다야! 이제 내 규칙은 안전합니다. 🎉 보안 유출에 기여하지 않는 것이 기분이 좋지만 더 이상 걱정스러운 이메일을 받지 않는 것이 좋습니다.
참고: 인증을 설정했거나 광범위한 데이터베이스 계층화 및 보안 규칙이 필요한 경우 this is a good blog post을 참조하십시오.
Reference
이 문제에 관하여(블로그를 위해 Firebase 실시간 데이터베이스 규칙을 안전하게 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/singhshemona/how-to-make-the-firebase-realtime-database-rules-secure-for-a-blog-1g45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)