Skip to content

심플홈페이지 백엔드와 연동되는 AI-RAG 챗봇 기능을 적용#119

Closed
miniplugin wants to merge 15 commits into
eGovFramework:mainfrom
miniplugin:contribution
Closed

심플홈페이지 백엔드와 연동되는 AI-RAG 챗봇 기능을 적용#119
miniplugin wants to merge 15 commits into
eGovFramework:mainfrom
miniplugin:contribution

Conversation

@miniplugin

Copy link
Copy Markdown
Contributor

수정 사유 Reason for modification

심플홈페이지 프런트와 백엔드에 대한 README.md 문서 내용을 AI-RAG 챗봇 기능을 추가하여 사용자가 AI에 질문 형식을 사용하여 좀 더 쉽게 프로젝트를 파악할 수 있게 하는 기능을 추가하게 되었습니다.
이번에 심플홈페이지 백엔드에 적용된 AI-RAG챗봇과 연동되는 프런트엔드의 리액트에 AI-RAG챗봇 기능을 적용하였습니다.

  • 버그수정 Bug fixes
  • 기능개선 Enhancements
  • 기능추가 Adding features
  • 기타 Others

수정된 소스 내용 Modified source

  • public/ai_rag.html 에 Egov심플홈페이지 프런트엔드/서버엔드 무엇이든 물어보세요. UI페이지 추가.
  • src/components/EgovFloatingButton.jsx 에 홈페이지 우측 하단에 팝업창을 띄우는 버튼을 콤포넌트로 추가.
  • src/css/floatingButton.css 에 위 버튼 콤포넌트의 CSS디자인 추가
  • src/routes/index.jsx 에 위 버튼 콤포넌트의 출력 코드를 추가.

JUnit 테스트 JUnit tests

  • JUnit 테스트 JUnit tests
  • 수동 테스트 Manual testing

테스트 브라우저 Test Browser

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Internet Explorer
  • 기타 Others

테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video

image

@eGovFrameSupport

Copy link
Copy Markdown
Contributor

백엔드와 한 쌍으로 동작하는 신규 기능이라, 템플릿의 범위·방향에 대한 판단이 필요해, 검토를 거치려 합니다.
그 사이 상태를 명확히 하기 위해 이 PR을 draft로 전환했습니다.

현재 확인된 취약점은 다음과 같습니다.
채택으로 방향이 잡히면 아래 항목들을 반영하셔야 할 것으로 보입니다.

  • XSS (public/ai_rag.html): appendMessage()가 사용자 입력 원문과 LLM 응답을 살균/이스케이프 없이 innerHTML로 삽입하며,
    응답은 marked.parse()로 HTML 변환됩니다. 특히 사용자 입력은 마크다운 렌더링과
    무관하게 원문 그대로 삽입됩니다. → <img src=x onerror=...> 형태의 입력만으로 프론트 오리진에서 스크립트가 실행되어
    세션/쿠키 탈취 등이 가능합니다.
  • 백엔드 주소 하드코딩 (http://localhost:8080): 챗봇 화면이 백엔드를 http://localhost:8080으로 고정 호출합니다. 이
    레포가 이미 사용하는 BACKEND_URL 구성 방식과 불일치하여 k8s·운영 등 로컬 외 환경에서 동작하지 않고, HTTPS로 서빙되는
    페이지에서는 mixed-content로 차단됩니다.
  • 외부 CDN(jQuery 등)을 무결성 검증(SRI) 없이 로드하고 marked가 중복 로드되는 부분은 정리가 권장됩니다.

방향이 정해지는 대로 다시 안내드리겠습니다.

@eGovFrameSupport
eGovFrameSupport marked this pull request as draft July 7, 2026 06:57
@miniplugin

miniplugin commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

1). XSS (public/ai_rag.html): ai_rag.html 파일에서 input에서 스크립트 사용 못하게 appendMessage 함수를 수정처리.
2). 백엔드 주소 하드코딩: EgovFloatingButton.jsx 파일에서 백엔드주소를 기존 .env의 변수로 보내게 처리 후 ai_rag.html에서 받아서 사용하게 수정.
3). 외부 CDN 중복: ai_rag.html 파일에서 marked.min.js 을 불러오는 중복CDN 삭제 처리완료.

@eGovFrameSupport

eGovFrameSupport commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

표준프레임워크에 대한 지속적인 참여에 대단히 감사드립니다.
백엔드 PR #164이 close 처리되어, 해당 PR도 close 합니다.

상세 배경은 #164 코멘트를 참고 부탁드립니다.

RAG 성격이 egovframe-ai-rag와 중복되고, README 단일 문서에는 RAG 도입의 실익이 적다는 점이 주된 사유입니다.
내용 자체와 별개로 방향 판단에 따른 정리이니 양해 부탁드리며, 제안 감사드립니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants