같은 뿌리에서 갈린다는 결
둘을 따로 정의하기보다, 같은 뿌리에서 갈린다는 점으로 말씀드리고 싶습니다. 둘 다 바깥에서 들어온 입력을, 시스템이 단순한 데이터가 아니라 명령으로 받아들이는 데서 생깁니다. 인젝션은 그 입력이 서버 쪽 명령으로 섞여, 데이터베이스나 시스템이 의도 밖 동작을 하는 것입니다. 스크립트 끼어들기는 그 입력이 다른 사용자의 화면에서 실행되는 코드로 섞여, 그 사용자 브라우저에서 의도 밖 동작을 하는 것입니다. 즉 어디서 그 입력이 명령으로 해석되느냐 — 서버냐 다른 사용자 화면이냐 — 가 둘을 가르는 차이입니다. 공통 원리는 같습니다.
데이터와 명령의 경계가 무너진 것입니다. 그래서 대응도 같은 뿌리에서 나옵니다. 입력을 명령과 섞이지 않게 분리해 다루는 것입니다. 다만 섞이는 위치가 달라 구체 대응 방식은 갈린다는 점도 더합니다. 명칭을 외우기보다, 공통 뿌리와 갈리는 지점을 같이 짚는 게 핵심입니다. 핵심은, 정의가 아니라 같은 뿌리에서 어디서 갈리는지를 짚는다는 점입니다.