Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[버그] SEQ 충돌 , 에디터 파일업로드문제 ,1.7.3.6버전 #274

Closed
yongirl320 opened this issue Jan 9, 2014 · 12 comments
Closed

Comments

@yongirl320
Copy link

a1

디비의 최대SEQ값을 확인합니다.

a2

임의의 게시판에서 글쓰기를 하고 파일하나를 업로드합니다.

a3

다시 디비의 최대 SEQ를 확인합니다. 파일을 하나만 업로드하면 seq값이 2가 증가합니다. 하나는 게시판 document번호이고 하나는 파일저장번호입니다.

a4

이때 firebug를 이용하여 document번호가 이미 저장된것을 확인할수 잇습니다.

a5

firebug를이용하여 document_srl값을 +4합니다. 게시판에 글을 쓸때
파일을 하나만 업로드할경우 seq를 모두4개 생성합니다,
즉 다음번에 똑같은 방식으로 글을 등록하면 +4한 seq가 생성되죠
수정한후 글등록을 합니다.

a6

+4한 document_srl로 게시판에 글이 등록된것을 확인할수 있습니다.
198번글로 등록되었습니다 . 이때 디비의 최대 seq를 확인하면
197번으로 되어있습니다.

a7

다른 브라우저를 사용해서 다시 글등록을 합니다. 파일을 하나만 첨부하구요
이때 생성된 seq가 이미 사용중인거로 되여서 글수정으로 넘어가게 되면서
권한이 없습니다.라고 나타 납니다.


문제는 document_srl를 받아서 새로운 문장으로 저장할경우
디비의 seq테이블에서 존재여부를 확인한번 해야 되지 않을가요?

실제 파일업로드를 할때 seq번호를 생성하는자체가 문제라고 생각합니다.

제 생각은 파일을 업로드할때는 db에 저장하지 않고 업로드한 파일명을
먼저 폼의 hidden에 저장해두엇다가 글등록할때 글을 디비에 넣고 그때
생성된 document_srl를 받아서 파일경로와 함께 file테이블에 저장하는게
낮지 않을가 싶습니다.

@ForPeople
Copy link
Contributor

버그가 아니라고 봅니다.
에디터에서 임의로 시퀀스를 부여하는 방식으로 파일 업로드를 하는데 중간에서 srl 값을 변경하신 것이지요.
정상적으로 사용한게 아니라 비정상적으로 테스트 하시고 억지로 안된다고 주장하시는 것입니다.
파일 업로드의 경우 파일등록을 진행할때 이미 저장되어 대기 상태가 됩니다.
중간에서 srl 을 바꾸지 않으면 됩니다.

@yongirl320
Copy link
Author

큰 문제가 되지는 않겟지만 , 이자체가 프로그램 문제가 아닐가요?

누군가가 장난적으로 이렇게 seq를 고쳐서 글을 등록하게 된다면

다른 분들이 게시판에 글등록할때 방해가 되지 않을가요?

@ForPeople
Copy link
Contributor

말씀 들어보니 그럴수도 있겠네요. 비단 파일뿐만 아니라 시퀀스를 사용하는 모든 부분에서 그럴 수 있겠네요.

@largeden
Copy link
Contributor

largeden commented Jan 9, 2014

@yongirl320
데이터 이전할때 시퀸스 충돌과 비슷하군요.
XE가 제시한 프로그램에 의도된 결과가 아니라 사용자가 임의로 수정(데이터 이전도 사용자가 이전)한 경우이니, 코어가 해결을 제시하는건 맞지 않다고 보입니다.

그리고, 만약 장난으로 시퀸스를 바꿨을때 getNextSequence가 바꾼 번호 다음으로 간다면 큰 문제가 되지만 시퀸스는 정상적으로 기록된 번호의 다음번호를 처리하기 때문에 오히려 더 안전하게 프로그래밍 된게 아닐까 합니다만?

@yongirl320
Copy link
Author

@largeden
getNextSequence 하게 되면 xe_sequence 테이블에 기록된 다음번호를 생성하죠
글등록할때 document_srl을 수정하게 되면 document테이블에만 이상한 시퀸스가 입력됩니다.
즉 xe_sequence 에서 생성되지 않은 시퀸스가 document에 입력되는거죠 .

여러 모듈에서 사용하게 되는 srl(시퀸스)는 반드시 xe_sequence테이블에 존재하는 시퀸스가 되어야 하는게 아닌가요 ?

@largeden
Copy link
Contributor

largeden commented Jan 9, 2014

@yongirl320
위에도 말했지만 코어의 의도된 프로그램안에서는 반드시 sequence를 거쳐서 번호를 발급받게 되어있습니다.
코어가 의도하지 않은 firebug 등을 통한 정보변경을 코어가 어떻게 대처하면 좋을까요?

@yongirl320
Copy link
Author

제가 이글을 작성할때 적어놓았습니다.

클라이언트로 부터 받은 document_srl을 디비에 저장하기전에 xe_sequence 테이블에서 존재하는 시퀸스인지
검증만 하면 되지 않을가요? 존재하지 않으면 잘못된 접근이겟죠.

이러한 검증이 없어서 잘못된 document_srl이 입력될수 있는거죠.

@largeden
Copy link
Contributor

largeden commented Jan 9, 2014

그렇군요... @yongirl320 님께서 그 해결책을 코드로 풀리퀘스트 해주시면 좋을거 같아요 :)

@yongirl320
Copy link
Author

@largeden
죄송하지만 제가 git을 사용해본지 얼마 안되고 pull request 할줄을 모릅니다 ㅜㅜ

@largeden
Copy link
Contributor

largeden commented Jan 9, 2014

@yongirl320 님 정도면 금방하실거 같아요 ^^
시간 걸리실거 같으면 여기다가 관련 코드 적어놓으시면 누군가가 커밋할겁니다. :)

@ForPeople
Copy link
Contributor

@yongirl320
document 입력시 sequence 테이블에 존재하는 시퀀스인지 검증만 해서는 중복 시퀀스에 대한 또다른 문제가 발생할 것 같구요. 그것보다 document 의 insert 와 modify 과정중에 검증 부분이 더 필요할 것 같아요.

@ForPeople
Copy link
Contributor

@yongirl320 @largeden
음.. 제가 혹시 다른 모듈에 영향이 갈까봐 document 모듈을 건들지 않고 board 모듈에서 해결해 보았습니다. board 쪽에 풀리퀘스트 하겠습니다.

@ghost ghost self-assigned this Jan 10, 2014
@ngleader ngleader closed this as completed Feb 5, 2014
@ghost ghost removed the type/bug label Feb 6, 2014
@ghost ghost removed their assignment Feb 6, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants