워드 프레스 플러그인 지원을하는 년은 나에게 나쁜 습관을 가르쳐. 고객이 당신에게 깨진 직렬화 된 옵션 blob을 보내, 당신은 그것을 읽을 필요가있다 지금그래서 당신은 구글이 당신에게주는 최초의 온라인 unserializer 에 붙여 넣습니다. 나는 그것에 대해 생각하지 않고 오랫동안 이것을했습니다 - 내가 I & # 39;d 가 방금 붙여 넣은 것을 보았던 날까지. 그것은 customer & # 39;s 였습니다 wp_options 내보내기. 그것은 그들의 SMTP 암호,Mailchimp API 키,라이선스 키를 포함 했다. 모든 그냥 내가 could't 이름,국가에서 누군가에 의해 실행 내가 아무것도 모르는 서버에 POSTED 했다't 추측.
나쁜 일은 일어나지 않았어,내가 아는 한. That's 불안한 부분 - 알 길이 없어. There's no notification for "your paste got logged." 데이터는 someone's 액세스 로그에 있거나 did't,그리고 I'll never find out which.
그 사건은 Toolz.dev 가 작동 하는 방식의 큰 부분입니다. 사이트에 있는 50 개의 도구 중 하나 하나 모두 브라우저에서 입력을 처리 합니다. 하지 & quot;we promise we delete it after processing" - 그것은 결코 처음부터 전송을 가져옵니다. 이 가이드는 그 두 아키텍처의 차이점을 설명 합니다,왜 거의 다른 사람 보다 개발자에 대 한 더 중요 한,그리고 tool's claims 자신을 확인 하는 방법 약 30 초. 그리고,나는 결국 어딘가에 안전한 그 고객 blob 을 붙여 넣기 않았다 이후,the PHP 직렬화 해제기 그것이 나의 나쁜 습관을 대체했습니다.
TL;DR: 서버 측 도구는 다른 사람에게 입력을 전송's 기계,이는 기록,보유, 침해,또는 공유 할 수 있습니다 - 그리고 당신은 can't 그 중 하나를 확인합니다. 클라이언트 측 도구는 당신에게 코드를 배송하고 로컬로 모든 것을 처리; 확인은 하나의 DevTools 네트워크 탭 검사를 걸립니다. 자격 증명이 포함 된 모든 것에 대해 - JWTs,
wp-config값, 연결 문자열, API 응답 - 다음과 같은 클라이언트 측 도구를 사용합니다 JSON 포맷터, JWT 디코더, SQL 포맷터, 그리고 야엘 검증인. 모든 것 Toolz.dev 브라우저에서 실행됩니다.
온라인 도구에 붙여넣으면 실제로 무슨 일이 일어나나요?
정확히 두 개의 아키텍처가 있으며 모든 온라인 도구는 그 중 하나를 사용합니다.
서버측: 입력은 브라우저에서 tool's 서버로 이동하고,거기서 처리되고,결과가 다시 돌아갑니다. 5 단계,그리고 그 중 3 단계 동안 데이터가 다른 사람's 인프라에 존재합니다.
Your browser → network → their server → network → your browser
(input) (transit) (processing, (transit) (result)
logging?,
retention?)
클라이언트 측: 브라우저는 도구를 다운로드's 자바 스크립트 한 번,그리고 모든-입력,처리, 출력-당신의 기계에 탭에서 발생 합니다. 이제까지 네트워크를 교차 하는 유일한 것은 코드 였다.
Their server → your browser
(code) (input + processing + result, all local)
구별은 당신이 don't 통제 서버에 데이터에 일어날 수 있는 무슨을 목록으로 만들 때까지 학문적으로 들린다. 그것은 접근 통나무와 신청 통나무에서 착륙할 수 있다. 그것은 무언가가 던질 때 스냅샷 요구 문맥인 Sentry 같이 과실 추적자에 의해 붙잡힐 수 있다. 그것은 통신수 "deleted" 그것 후에 백업에서 오래 유지될 수 있다. 그것은 통나무 접근을 가진 어떤 직원든지 읽힐 수 있다. 그것은 위반에서 쓸려 올라갈 수 있다. 그리고 몇몇 "free tool" 통신수,실제 제품일 수 있다 - 분석을 통해 수익화되거나 훈련 자료로 판매된다.
이들 중 어느 것도 악의가 필요하지 않습니다. 기본 로깅 구성만으로 대부분의 작업을 수행 할 수 있습니다. 내가 사용한 해당 직렬 해제기의 운영자는 아마도 내 customer's SMTP 암호를 보지 않았을 것입니다. 그러나 "probably"는 보안 태세가 아닙니다.
이것이 다른 사람보다 개발자에게 더 큰 거래인 이유는 무엇입니까?
우리가 붙여넣는 것 때문에요. 보통의 사용자는 단어 카운터에 문단의 텍스트를 붙여넣습니다. 개발자는 붙여넣기:
라이브 토큰을 사용한 API 응답. You're 통합을 디버깅하면 전체 응답 - 헤더 포함 -을 복사하고 포맷하여 읽습니다. 그 Authorization: Bearer ... 헤더는 그냥 포맷터가 사는 곳 어디든 갔다. GitGuardian's 비밀의 상태 확산 연구에 따르면 2023년에만 공개 GitHub 커밋에 노출된 약 1,280만 개의 비밀이 발견되었습니다. GitHub와 달리 도구 운영자' 로그 aren't를 공개적으로 스캔할 수 있기 때문에 누구도 온라인 도구에 대해 동등한 숫자를 게시하지 않습니다. That's는 안심할 수 없습니다. 이는 누출 표면이 보이지 않는다는 것을 의미합니다.
JWT. JSON 웹 토큰은 암호화되지 않은 base64url 인코딩입니다 RFC 7519 에 대해 명시적입니다. 서버 측 디코더에 붙여 넣는 모든 토큰의 페이로드는 user's ID,이메일, 역할 및 만료 기간을 넘겨줍니다. 토큰이 여전히 유효한 경우 you've 는 잠재적으로 작업 세션 자격 증명을 사용하여 로컬로 디코딩합니다 JWT 디코더 대신.
실제 데이터가 포함된 SQL입니다. 쿼리 you're 서식에는 다음이 있습니다 WHERE email = '[email protected]' 그 안에 절이 있고 테이블 이름이 전체 스키마를 스케치합니다. 그만큼 SQL 포맷터 탭에 보관하세요.
파일 구성. wp-config.php 가치, .env 내용, 쿠버네티스 매니페스트, database.yml- 구성은 자격 증명이 존재하는 곳입니다. I've 는 내 Laravel 앱이 가지고 있던 모든 비밀을 포함하는 YAML 파일의 유효성을 검사했습니다. That's a paste you want going through a client-side 야엘 검증인, 양식이 아닙니다.
직렬화 된 워드 프레스 데이터. 소개에 따라 내 개인적인 몰락. WordPress 는 옵션과 메타 데이터를 PHP 직렬화 된 문자열로 저장하고 디버깅하는 것은 직렬화 해제 - the PHP 직렬화 해제기 당신의 customer's 자료 없이 당신의 기계를 떠나는 그것을 하십시오.
이러한 범주 중 하나라도 부주의하게 붙여넣는 것은 누구도 감지하거나 보고하거나 정리하지 못하는 보안 사고입니다.
도구가 실제로 클라이언트 측인지 확인하려면 어떻게 해야 합니까?
클라이언트측 아키텍처에서 가장 마음에 드는 부분입니다: you don't have to trust anyone's 개인정보 보호정책. 주장은 기계적으로 검증 가능합니다.
- 도구를 엽니다's 페이지.
- DevTools(F12) →를 엽니다 네트워크 탭. 체크 "예약 로그."
- 인식 가능한 일부 테스트 데이터에 붙여넣기 -
MY-SECRET-TEST-12345작동하고 도구를 실행합니다. - 요청 목록 보기.
도구가 클라이언트 측인 경우 you'll은 초기 페이지 로드 및 정적 자산을 참조한 다음 아무것도 처리할 때. 변환/포맷/프로세스 버튼을 눌렀을 때 요청이 실행되면 요청을 필터링하고 테스트 문자열의 페이로드를 검사합니다. 찾았나요? 서버 측. 완료 - 30분 정도 걸렸으며 이제 해당 도구의 개인 정보 보호 정책이 알려주는 것보다 해당 도구에 대해 더 많이 알게 되었습니다.
Toolz.dev 에 대한 두 가지 정직성 노트,이는 양방향을 절단하기 때문입니다. 첫째,사이트는 페이지보기 카운트에 대한 로드 분석을 수행하고 추적을 수행합니다 그 사용 제한을 위해 도구가 사용되었지만 결코 사용되지 않았습니다 무엇 당신은 그것에 넣어. 네트워크 검사를 실행 자신; 입력은 어떤 요청에도 나타나지 않습니다. 둘째,클라이언트 측은 실제 제한이: 브라우저가 작업을 수행,그래서 4 GB 비디오 트랜스코드 isn't 탭에서 일어나는. 도구의 포맷터 /컨버터/ 인코더 범주에 대 한,하지만, 현대 자바 스크립트는 충분히 빠른 이상-일반적으로 서버 측 보다 빠른,때문에 there's 전혀 업로드 왕복.
서버 측과 클라이언트 측: 직접적인 비교
| 서버측 도구 | 클라이언트측 도구 | |
|---|---|---|
| 처리가 이루어지는 곳 | Operator's 서버 | 귀하의 브라우저 |
| 데이터가 전송되었나요? | 네, 매번요 | 아니요 - tool's 코드만 다운로드됩니다 |
| 운영자가 기록/보유할 수 있습니다 | 예, 종종 기본적으로 | 아니요 - 운영자는 이를 받지 않습니다 |
| 도구 위반으로 노출되었습니다 | 예, 유지된다면 | 아니요 |
| 귀하가 확인할 수 있습니다 | 아니요 - 정책을 신뢰합니다 | 예 - DevTools 네트워크 탭, ~30초 |
| GDPR 프로세서 계약이 필요합니다 | 예, 개인 데이터인 경우(제28조) | 제3자에 의한 처리는 발생하지 않습니다 |
| 로드 후 오프라인으로 작동합니다 | 아니요 | 종종 그렇습니다 |
| 일반적인 dev 작업의 속도 | 업로드 + 큐 + 다운로드 | 즉시 - 네트워크 왕복이 없습니다 |
| 무거운 계산 (비디오, 거대한 파일) | 더 적합 | 장치에 의해 제한 |
GDPR은 이에 대해 무엇을 말합니까?
I'm은 변호사가 아닌 개발자이므로 이를 법적 조언이 아닌 엔지니어링 맥락으로 다루십시오. 그러나 EU 사용자 데이터를 처리하는 모든 사람에게는 개요가 중요합니다.
언더 규정(EU) 2016/679 (GDPR), 개인 데이터를 가져 오는 경우 - customer's 지원 내보내기, 사용자 기록이있는 API 응답 - 제 3 자's 서버를 통해 푸시하면 해당 제 3 자가 귀하를 대신하여 개인 데이터를 처리합니다. 제 28 조에는 데이터 처리 계약이 필요하다고 명시되어 있습니다. 얼마나 많은 무료 온라인 포맷터가 DPA 를 제공하는지 스스로에게 물어보십시오. 나는 한 번도 본 적이 없다.
클라이언트 측 도구는 영리한 법률 초안 작성을 통해서가 아니라 아키텍처를 통해 전체 질문을 회피합니다: 데이터가 공급자에게 도달하지 않으므로 종이로 처리할 타사 처리가 없습니다. 데이터 최소화 (5 (1) (c) 항) 는 가능한 가장 문자 그대로 만족합니다 - 공급자가 수집하는 데이터의 양은 0 입니다. 동일한 논리는 HIPAA (건강 데이터는 규정을 준수하지 않는 서버에 도달하지 않음), SOC 2 감사 (데이터 경로에 검사되지 않은 하위 프로세서 없음) 및 PCI DSS 에 도움이됩니다.
명확하게 하기 위해: 클라이언트측 도구를 사용하여 doesn't make 당신의 제품 GDPR 준수. 개발 워크플로우에서 구체적이고 놀랍도록 일반적인 유출을 제거합니다. 즉, 지원 티켓에 도움이 되려고 노력하는 개발자가 개인 데이터를 임의의 웹사이트에 붙여넣는 유출입니다.
어떤 작업이 서버에 닿아서는 안 됩니까?
누출로 인해 얼마나 많은 피해를 입을지 정렬된 개인 분류:
서버 측에서는 자격 증명을 포함하거나 암시하지 않습니다:
- API 응답 및 페이로드 포맷: JSON 포맷터
- 토큰 디코딩: JWT 디코더, Base64 변환기
- 쿼리 형식 지정: SQL 포맷터
- 구성 검증: 야엘 검증인
- 워드 프레스 데이터 디버깅: PHP 직렬화 해제기
- 값을 해싱하고 비교합니다: 해시 생성기
- 자격 증명 생성: 비밀번호 생성기, UUID 생성기
클라이언트 측을 강력히 선호합니다 - 독점적이지만 비밀은 아닙니다:
- 내부 코드 또는 계약 차이: 텍스트 차이, JSON 차이점
- 생산 로그 라인에 대한 정규식 테스트: 정규식 테스터
- 로그 및 토큰에서 타임스탬프 변환: 타임스탬프 변환기
- 내부 스크린샷 압축: 이미지 압축기
낮은 지분, 하지만 클라이언트 측은 여전히 단지 더 빠릅니다:
There'의 전체 도구 상자를 더 길게 연습합니다 개발자 생산성 도구 가이드 그리고 the 코딩 도구 가이드.
정품 서버 측 도구가 필요한 경우 - 로컬 대안이없는 무거운 변환 - 먼저 살균하십시오. 에 대한 실제 키를 교환하십시오 YOUR_API_KEY, 실제 이메일 [email protected]. It's 잠재적인 사건을 비사건으로 바꾸는 60 초의 찾기-바꾸기.
대부분의 온라인 도구는 서버 측인 이유는 무엇입니까?
부분적으로 역사,부분적으로 인센티브. 2010 년,브라우저가 were't 까지는 작업 - 서버에서 무거운 처리가 이루어져야 했습니다. 그 제약은 사라졌습니다: 최신 JavaScript 엔진과 WebAssembly 는 서식 지정,변환, 해싱,이미지 압축을 네이티브와 구별할 수 없는 속도로 처리하며 브라우저 API (파일,캔버스, 웹 암호화) 는 I/O 를 다룹니다.
인센티브는 더 까다로운 문제입니다. 서버 측 처리를 통해 운영자는 사용량을 자세히 확인하고,한도를 정확하게 적용하고,처리 로직을 독점적으로 유지하고, - 최악의 경우 - 데이터 자체를 수익으로 취급 할 수 있습니다. 데이터를 수신하지 않는 도구는 & #39;t 데이터를 수익 화 할 수 있으며,이는 일부 운영자가 don & #39;t 가 이제 기술적으로 쉽더라도 아키텍처를 원하는 정확한 이유입니다.
내가 Toolz.dev를 위한 도구를 만들었을 때 클라이언트 측은 실제로 더 간단한 더 사적인 것뿐만 아니라 엔지니어링 선택: 확장할 처리 서버가 없고,보안을 위해 업로드할 수 없으며,작성할 보존 정책이 없으며,논리가 일반 플랫폼에 구애받지 않는 TypeScript 이기 때문에 모든 도구가 웹 앱과 데스크톱 앱에서 동일하게 작동합니다. 개인 정보 보호 스토리와 엔지니어링 스토리는 같은 방향을 가리킵니다. 그런 일이 발생하면 It's rare; take the win.
자주 묻는 질문
"client-side processing"는 실제로 무엇을 의미합니까?
모든 계산은 브라우저에서,JavaScript (또는 WebAssembly) 에서,기기에서 이루어집니다. server's 유일한 역할은 페이지가 로드될 때 tool's 코드를 전달하는 것입니다. 입력은 DevTools 네트워크 탭에서 확인할 수 있는 네트워크 요청에 절대 나타나지 않습니다.
도구가 클라이언트 측인지 확인하려면 어떻게 해야 합니까?
DevTools (F12) → 네트워크 탭을 열고 "Preserve log," 인식 가능한 테스트 데이터를 도구에 붙여넣고 처리합니다. 테스트 문자열이 포함된 요청이 없으면 도구는 클라이언트 측입니다. Chrome 에서는 DevTools 를 "Offline" 페이지 로드 후 - 진정한 클라이언트 측 도구가 계속 작동합니다.
클라이언트측 도구가 서버측 도구보다 느리나요?
일반적인 개발자 작업의 경우,they're faster - there's no upload,no queue,no download. 2 MB JSON 파일을 로컬로 처리하는 것은 거의 즉각적이며 서버 왕복은 모든 단계에서 대기 시간을 추가하는 반면 강력한 서버가 브라우저 탭을 이기는 무거운 계산 (대형 비디오 트랜스코드,기가바이트 규모의 파일) 은 예외입니다.
Toolz.dev 는 전혀 아무것도 수집합니까?
페이지 보기 분석 및 익명 도구당 사용 횟수 (요금 제한에 사용) - 하지만 처리하는 콘텐츠는 절대 사용하지 않습니다. 입력,출력 및 업로드된 파일은 브라우저에 그대로 유지됩니다. 이는 믿음을 가져야 하는 것이 아니라 네트워크 탭 확인으로 확인할 수 있습니다.
JWT를 온라인 디코더에 붙여넣는 것은 정말 위험한 일입니까?
예,대부분의 개발자가 가정하는 것보다 더 많은 것입니다. RFC 7519 에 따라 JWT 페이로드는 암호화되지 않고 인코딩됩니다. 토큰을 보유한 사람은 누구나 클레임을 읽을 수 있으며 토큰 hasn't 가 만료된 경우 라이브 자격 증명으로 사용할 수 있습니다. 서버 측 디코더에 하나를 붙여 넣으면 알 수없는 제 3 자에게 유효할 가능성이있는 세션 토큰을 전송합니다. 클라이언트 측 디코더를 사용하십시오.
클라이언트측 도구를 사용하면 GDPR을 준수하게 됩니까?
어떤 단일 도구 선택도 당신을 준수하게하지 않습니다. 클라이언트 측 도구가 제거하는 것은 하나의 특정 위험입니다: 시스템의 개인 데이터가 조사되지 않은 타사 프로세서에 도달 (이는 거의 확실하게 don & # 39;t 무료 도구 사이트와 함께 가지고있는 제 28 조 데이터 처리 계약이 필요함). 자신의 product& # 39;s 의무는 영향을받지 않습니다.
고용주가 클라이언트 측 도구에서 처리하는 내용을 볼 수 있습니까?
네트워크 모니터링은 클라이언트 측 도구에 입력한 내용이 아니라 방문한 사이트를 확인합니다. there's 관찰할 입력을 전달하는 요청이 없습니다. 장치 자체에 설치된 엔드포인트 모니터링 (화면 캡처,키로거) 은 도구 아키텍처에 관계없이 모든 것을 보기 때문에 정직한 대답은: 네트워크를 통해서가 아니라 아마도 엔드포인트를 통해서입니다.
만약 there's 내 작업에 대한 클라이언트 측 대안이없는 경우?
붙여넣기 전에 삭제: 자격 증명을 자리 표시자로 바꿉니다(YOUR_API_KEY), 실제 개인 데이터를 더미 값으로 교환하고 호스트 이름 및 내부 URL 을 제거합니다. 그런 다음 로깅 및 보존 언어에 대한 tool's 개인 정보 보호 정책을 확인하고 검사할 수 있는 오픈 소스 도구를 선호하며 "free,closed-source,server-side"를 가장 위험도가 높은 조합으로 취급합니다.
클라이언트측 도구와 서버측 도구의 차이점은 무엇입니까?
클라이언트 측 도구는 코드를 브라우저에 발송하고 거기에서 실행; 서버 측 도구는 데이터를 기계에 발송 당신은 don't 제어하고 거기에서 실행합니다. 기능적으로 출력은 동일 할 수 있습니다 - 차이점은 전적으로 누가 당신의 입력을 보유하게되는지에 관한 것입니다. 서버 측 도구를 사용하면 데이터가 다른 사람 's 디스크, 로그 및 백업에 그러나 간략하게 존재합니다.
온라인 JSON 포맷터 및 뷰티 피퍼는 사용하기에 안전합니까?
카테고리가 아닌 구현에 따라 다릅니다. JSON 을 포맷하는 것은 JavaScript 에서 하기에 사소한 일이므로 클라이언트 측 포맷터는 아무 것도 전송할 이유가 없습니다 - 그리고 네트워크 탭 검사는 10 초 안에 그것을 정착시킵니다. 여기서 평소보다 더 조심하세요. 왜냐하면 JSON 개발자들이 포맷터에 붙여넣는 것은 토큰,이메일 주소,내부 ID 를 포함하는 API 응답이 불균형적으로 많기 때문입니다.



