그누보드의 ajax 호출 코드를 비동기식으로 전환할 것을 건의합니다. > 자유게시판

자유게시판

그누보드의 ajax 호출 코드를 비동기식으로 전환할 것을 건의합니다. 정보

그누보드의 ajax 호출 코드를 비동기식으로 전환할 것을 건의합니다.

본문

안녕하세요.

 

네. 제목대로입니다.

두가지의 주제로 글을 적어볼까 합니다.

 

첫번째로, ajax 호출에 대한 의견입니다.

현재 동기식 ajax 호출에 대하여 Chrome와 Firefox 브라우저에서는

콘솔을 통하여 경고 메시지를 출력하며 비동기식 호출을 유도하고

있습니다. 왜 이런 경고를 하고있는 것일까요?

비슷한 예를 들자면 SSL(https) 미사용에 대한 경고와도 비슷하다고 할 수

있겠습니다. 결론적으로 두가지 사안 모두 다 보안을 위한 조치라고 익히

알고 계실 겁니다.

 

하지만 전자와 후자의 성격은 미묘하게 다릅니다.

전자는 Server의 보호를 위한 측면이 강하며

후자는 Client의 (개인정보)보호를 위한 측면이 강합니다.

또한 전자는 별도의 추가 비용이 소요되지 않고

(단, Server 자원의 잠재적 성능향상을 필요로 합니다.)

후자는 보안인증서 발급 및 유지보수를 위한 비용이 발생합니다.

 

또한 상황에 따라 개발 용이점과 퍼포먼스에서의 장단점이 존재합니다.

 

SSL의 경우 비용과 여러가지 여건에 따른 선택의 여지가 있다고 생각합니다.

하지만 ajax의 동기식 호출(async : false)은 문제의 소지가 있다고 예상됩니다.

특히나 DDos 공격에 대한 잠재적 취약점을 가지고 있다고 볼 수 있습니다.

이는 Server의 크래킹에 대한 문제가 아니라 좀 더 쉬운 DDos 공격의 타겟이

될 수 있으며 이로 인한 CPU와 메모리의 부하 및 스토리지의 대역폭 초과로 인한

서비스 장애의 원인이 될 수 있습니다. 동기식 ajax 호출의 경우 이러한 DDos 공격이

단순히 패킷의 양으로 계산할 수 있는 것이 아니라 아주 적은 수의 Client를 이용한

공격만으로 서비스 장애를 일으킬 수 있다고 볼 수 있습니다.

 

아직 그누보드에 ajax 호출이 아주 많이 쓰인다고 볼 수는 없습니다. 

하지만 그누보드를 기반으로 하여 프로젝트를 개발하고 또한 커스터마이징 하면서

더 많은 ajax 호출을 덧붙이게 될 경우, 기존의 그누보드에서 제공하는 코드의 응용으로

인하여 다수의 취약점이 발생될 가능성이 존재합니다.

이는 그누보드에서 사용되는 ajax 호출의 100%가 동기식이기 때문입니다.

(개인적으로 국내를 비롯하여 일본과 중국을 대상으로한 서비스를 준비 중이며

이 서비스가 크래킹의 대상이 될 요지가 다분한 부분을 다루고 있고 중국의 크래커는

매우 강력한 공격력을 지니고 있기에 js 에서의 취약점을 대부분 제거해 나가고 있습니다.

이제 captcha_result 부분과 토큰 부분만 일부 마무리하면 되는 단계입니다만 아직

충분치 않습니다.)

 

이는 저의 개인적인 견해일 수도 있으나 많은 개발자들께서 공감하시리라 생각합니다.

또한 더 많은 상호토론이 필요한 주제라고 생각합니다.

 

 

더불어 두번째로, 이 게시물의 내용과 같이 그누보드의 보안과 성능 및 기능의 향상을 위한

토론의 공간이 이곳 sir.kr 에 마련이 되었으면 합니다.

개발에 대한 강좌, 그누보드에 대한 팁, 질문과 답변, 사용후기 등의 섹션은 마련되어 있으나

이에 못지 않게 중요한 것이 그누보드를 활용하고 있는 개발자들의 순수한 토론공간이

필요하다고 생각합니다.

그누보드의 발전에 기여할 수 있는 좀 더 심층적인 토론 게시판의 오픈을 요청하는 바입니다.

 

 

긴 글 읽어주셔서 감사합니다. 

 

 

 

 
1304d2832adf17027bf2763da00f9f29_1495715559_9028.png

 

 


1304d2832adf17027bf2763da00f9f29_1495715559_994.png
 

 



 

 

추천
0

댓글 12개

동기식(async : false) 사용이 중복통신을 막는거라 트래픽은 적게나올 것 같은데,
제가 잘못 알고 있는건가요..?

[1] async : true - 기본값이며 async를 정의하지 않을 경우, true로
기본 정의 됩니다. ajax 호출시 서버와 클라이언트 사이의 통신이 비동기.
즉, 일체화(일시화)되지 않기 때문에 즉각적인 반응이 오지 않습니다.
클라이언트에서 서버측으로 ajax url을 호출하고 이에 대한 응답을
기다리고 리턴된 형식의 데이터(json 등)를 기반으로
그 다음 동작을 수행합니다.

[2] async : false - 별도로 선언을 해야하며 다수의 유력 브라우저와
여러 개발자 포럼에서 추천하지 않는 방법입니다.
ajax 호출시 서버와 클라이언트 사이의 통신이 동기화되어
즉시 처리되므로 응답속도가 빠르다는 장점이 있습니다.
하지만 이를 악용하자면 예를 들어 유효성을 검증하는
Server Side Script(PHP 등) 페이지에서 일부러 false, null 혹은
비유효성을 악의적으로 리턴시키는 경우에는 이 빠른 응답속도를
기반으로 하여 짧은 간격으로 반복적으로 같은 작업을 반복하여
Server의 과부하를 일으킬 수 있습니다.



그렇다면 왜? 대부분의 개발자들은 async : false 를 사용할까요?
혹 어떤 분께서는 빠른 응답속도 때문이라고 말씀하실 것입니다.
하지만 실상은 그렇지 않습니다. 비동기식으로 코드를 작성할 경우
그 까다로움과 난이도가 동기식보다 많이 증가되며 코드의 라인수도
늘어나기 때문입니다. 더 솔직하게 얘기하자면 ajax를 이용하여 복잡한
코드를 작성할 때 국내에서 본인 스스로를 풀스택 개발자라고 자칭하는
분들의 대부분께서는 async : false를 사용하지 않고는 본인의 생각대로
코드가 작동되지 않기 때문일 것입니다.

테스트 해보시면 아실 것입니다.
지금 여러분들의 .js 파일에서 'async' 문자열을 검색하여 해당 라인을
삭제해 보시기 바랍니다. 동작하지 않을 것입니다. 그리고 이를 기존처럼
정상적으로 동작하게 만들기 위하여 어느 정도 조사와 학습이 필요하며
"이제 되었다. 된다." 하는 시점에서 다른 복잡한 알고리즘을
ajax 호출로 대응할 경우에 다시 또 새로운 벽이 발생할 것입니다.

ajax 호출의 코드에서의 비동기식과 동기식의 작성방식은 전혀 다릅니다.
우리가 기존에 접하던 익숙한 Java Script 코드의 그것은 동기식 호출을
코딩할 때와 비슷하며 비동기식은 다소 까다로운 상황대처가 필요합니다.
저도 100% 마스터 하지는 못하고 아직 헤매고 있구요.

stackoverflow 를 많이 방문해야 어느 정도 감이 오구요. 정작 그런
stackoverflow 에서도 대부분 "async : false 를 삽입하세요." 라는
코멘트가 많습니다. 그리고 다시 답 코멘트로 이런식의 문장이 등장하는
경우가 많습니다. "이보세요. 동기식 쓰지 말라니까요. 아마추어에요?"

이런 트랜드에서 Jquery 마저 없이 비동기식으로 ajax를 호출하는
복잡한 알고리즘의 긴 코드를 작성한다는 것은 저같은 저급 개발자에게는
고문입니다. 하지만 적어도 유력 브라우저에서 권고하는 사항은
어떤 식으로든 지켜 나가고자 하는 노력을 하는 것이 옳지않나 합니다.

하여, 어려움을 느끼고 고민이 많기에 이런 부분들을 함께 토론하고
더 나은 그누보드로 나아갈 수 있도록 하는..., 그저 SIR의 업데이트만
기다리는 것이 아닌 우리들이 함께 기여하는 그런 장이 있었으면 합니다.
"그누보드의 보안과 성능 및 기능의 향상을 위한 토론의 공간"에 대해서 공감합니다. 있으면 좋겠네요.

답변 고맙습니다.
제 생각에는 당히 있으리라 여겼던 공간인데
게시물을 작성하기 위하여 찾아보니 없어서
아쉬웠습니다.

감사합니다.
미천한 의견임에도 좋게 말씀하여 주시니
오늘밤은 편하게 잠들수 있을 것 같습니다.

고맙습니다.
다른 분들께 조금이라도 생각의 여지를
드릴 수 있는 계기가 되었다면 저로서도
기쁜 마음입니다.
그누보드는 이미 코딩컨벤션도 없고 git으로 풀리퀘해서 개선할수 있는 방법도 없고 여러모로 골아픕니다.
그누보드로 작업을 시작해서 튜닝하는것보단 그냥 관두는게 훨씬 낫다는 우스개소리도 주변에서 많이 들려오구요.
저도 요즘 느끼고있긴합니다.
전체 195,265 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여3 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT