2011-12-19 2 views
0

스레드 대화를 필요로하는 프로젝트에서 작업하고 있습니다. 누군가 새로운 글을 게시하여 새 스레드를 만들고 모든 응답이 해당 스레드에 첨부됩니다. 기술적 인 관점에서 보면이 작업은 훌륭하지만, 내 솔루션의 보안에 대해 우려하고 있습니다.올바른 방법 프런트 엔드의 스레드 대화

스레드에 회신하려면 단순히 스레드의 데이터베이스 ID 인 스레드의 ID가 있습니다. 스레드에 해당하는 html 이렇게하면 자바 스크립트는 응답되는 스레드의 스레드 ID를 가져올 수 있으며이를 사용하여 응답 텍스트와 스레드 ID를 ajax를 통해 백엔드로 전달합니다. 또한 html에서 답장을 첨부해야하는 부분을 찾는 데 사용됩니다.

이 HTML의 예는 다음과 같습니다

<div id='thread_1' threadId='1'>Hey, how's it going? 
    <div id='replies_1' threadId='1'> 
    </div> 
    <input id='reply_text_1' type='text' value='Reply...' threadId='1'></input> 
    <input id='reply_button_1' type='submit' value='Reply' threadId='1'></input> 
</div> 
<div id='thread_2' threadId='2'>Anyone here? 
    <div id='replies_2' threadId='2'> 
    <div id='reply_2_1'>Yes, I'm here</div> 
    </div> 
    <input id='reply_text_2' type='text' value='Reply...' threadId='2'></input> 
    <input id='reply_button_2' type='submit' value='Reply' threadId='2'></input> 
</div> 

그것은 프론트 엔드 코드에서 데이터베이스 ID의의를 가지고 아닌 것 같아 좋은 생각 - 그것은 잠재적 인 보안 위험처럼 보인다. 문제는 어떻게 안전하게이 작업을 수행 할 수 있는가입니다. 프런트 엔드의 스레드 응답을 백 엔드 데이터베이스의 스레드에 연결하고 데이터베이스 ID를 노출시키지 않으려면 어떻게해야합니까?

참고 - 도움이 될 경우 백엔드는 Java + Spring + Hibernate입니다.

도움을 주시면 대단히 감사하겠습니다 !!

답변

3

html에 데이터베이스 ID가 있으면 보안 상 위험하지 않습니다. 어느 사이트에서나 html과 URL에서 자주 볼 수 있습니다. 중요한 것은 현재 사용자가 메시지 삭제/읽기/회신에 액세스 할 수있는 콜백을 체크 인하는 것입니다.

+1

테이블'JOIN' 열을 지나가고 행을 삭제 한 다음 ID를 다시 조직하면 주력 문제가 될 수 있습니다. 당신은 일종의 '외부'ID를 생성하는 것을 고려할 수 있습니다. 이것은 조인 열 (가능하면 원 래의 해시)이 아닙니다. 그 외에도 ID는 보안 위험이 될 수 없습니다. 결국 그 스레드를 참조 할 수있는 고유 한 방법이 있어야합니다. 하지만 사용자 권한에주의해야합니다. –

+0

이 주석은 큰 도움이됩니다 ... 그리고 나는 모든 것을 다시하지 않아도된다는 것에 대해 조금 더 나아졌습니다! 내 생각에 외부 ID에 대한 제안은 좋은 생각이며 확실히 구현할 것입니다. 사용자 파마에 대한 좋은 점도 있습니다 ... 이미 사이트를 구축했으며 사이트의 첫 번째 반복에 적합해야합니다. 다시 한 번 감사드립니다! – threejeez

+0

@Miles - 당신은 항문을 진짜로 느끼는 경우 ID를 해싱 할 수도 있습니다. :) – ericvg

관련 문제