|
SQL Injection 제대로 알고 있나요? SQL Injection 과 XSS 는 개발자라면 누구나 알지만 제대로 알고 대비하는 경우는 드물다 '싱글쿼터 입력을 막는다면 SQL Injection 공격에 안전한 것인가?' 아마도 SQL Injection 취약점 검색을 전혀 안해본 개발자는 많을것이다 '발생할 확률이 백만 분의 1이라는 말은 다음 주에 발생한다는 뜻이다' 이 책의 다양한 예제 소스와 사용예를 통해 개발자는 SQL Injection에 대해 제대로 알게 될것이다 |
|
2010년 10대 보안취약사항 중에서 1위가 Injection 취약점, 2위가 XSS로 나타났다. SQL Injection은 쉽게 시도할 수 있고 취약점이 발견되면 그로 인해 얻을 수 있는 이익도 상당하다. 상대적으로 공격을 당한 업체는 상당한 피해를 입을 가능성이 높다. 다른 취약점들도 있으면 안되겠지만, 특히 SQL Injection과 XSS는 당하지 않도록 항상 염두에 두고 개발해야 한다. 이 책은 이 둘 중에서 SQL Injection 주제를 다루고 있다. 이 책은 SQL Injection 취약점의 공격과 방어를 다루고 있다. <孫子><謀攻篇>에는 지피지기백전불태(知彼知己百戰不殆)가 있는데, 그 의미를 충분히 반영한 책이다. 책의 전반부에서는 SQL Injection을 진단하는 방법, 취약점이 발견되었을 경우 이를 통해 원하는 다양한 정보를 획득하는 다양한 방법론을 다루고 있다. 이 방법에는 예외를 발생시킨다거나 시간을 지연시킨다거나 쿼트(‘)를 사용한다거나, UNION을 사용하는 등의 다양한 방법들을 소개하고 있다. 대상 데이터베이스로는 Oracle, MySQL, Microsoft SQL Server를 주로 다루고, 각 데이터베이스 별로 Injection 공격을 소개하고 있어 좋았다. 아마존에서 리뷰를 검색한 결과 독자들의 만족도나 평가는 훌륭한 편이다. 평자도 그 의견에 전반적으로 동감한다. 책에는 다양하고 공격 방법을 다루고 있으며, 저자는 창의력만 발휘한다면, 다양한 방법과 원하는 결과를 획득할 수 있다고 이야기 한다. 공격과 더불어 방어에 대한 방법들도 소개하고 있다. 방어 방법을 소개하기 전에 소개하는 방법들이 절대적인 것은 아니며, 큰 틀만 제공한다고 충고한다. 방어는 크게 두 장(障)으로 나눠 설명하고 있다. 8장에서는 코드 레벨에서 방어를 9장에서는 플랫폼 레벨에서의 방어를 다루고 있다. 다양한 공격 방법에 비해서 큰 틀에서의 방어 방법은 쉬우면서도 간단한 편이란 생각이 들었다. 예전에 S 계열사 의류 브랜드 웹사이트 개발 및 유지보수를 2년 정도 한 적이 있었다. 그 곳은 상당한 보안 가이드가 있었고 무작위로 보안 점검을 실시하여 문제가 발생했을 경우에는 패널티를 받았다. 보안에 무지(無知)했던 그 당시에는 상당한 압박감을 받았었고 보안과 관련 공부를 했던 것이 도움이 되었다. 공격 방법에 대한 자세한 것들은 모르지만, 방어하는 방법에 대해서는 그 때 체득했다. 그래서 SQL Injection공격 부분을 흥미롭게 봤다. 방어 부분은 앞에서 언급했던 것처럼 이전부터 아는 내용이 많았다. 이 책은 번역서로의 많은 단점을 지닌 책이다. 첫 번째는 균일하지 못한 번역의 질이다. 책을 읽다 보면, 내용을 정확히 파악하기 애매한 부분들이 있었다. 예를 들어, 9장 코드 레벨의 방어 356 페이지 Java 매개변수 구문을 설명하는 부분에서 “다음은 JDBC 구문을 사용한 취약점이 존재하는 예이다”라는 문장은 단원의 성격상 매개변수를 사용했으므로 취약점이 제거된다는 의미의 문장이 나와야 하는데 생뚱맞다. 그래서 아마존 LOOK INSIDE를 찾아본 결과, 원문은 “Here is the earlier vulnerable example rewritten using a JDBC prepared statement”라고 되어 있었다. 미숙하지만 번역해 보면, “앞에서 취약한 예제를 JDBC Prepared Statement를 사용하여 다시 작성한 예제가 여기 있다.”라는 식이 되어야 할 것이다. 또한 문장이 통째로 날아간 부분들도 보인다. 같은 페이지에 하이버네이트(Hibernate)를 설명하는 부분에서 “Methods are provided on the Query object to use either named parameters” 문장은 아예 해석되지 않았다. 220페이지에서도 “That is, the credentials of the user executing the queries will be used” 라는 문장이 해석되지 않았다. 또한 문맥상 번역이 이상한 부분들도 있었다. 356 페이지 하이버네이트 설명 부분에도 그런 곳을 찾을 수 있다. 전반적으로 불명확한 부분들은 의역으로 처리하고 번역이 어려운 부분들 중에서 흐름에 문제가 없다고 판단한 부분들을 삭제한 것이 아닌가라는 생각이 들었다. 번역이 어려운 작업이란 것은 충분히 이해한다. 그러나 독자들이 오독할 수 있는 여지는 줄여야 할 것이다. 오타도 많은 편이다. 대표적인 것은 9장 SQL Injection 테스트일 것이다. 9장의 원래 제목은 플랫폼 레벨의 방어(Platform Level Defense)이다. 책을 읽으면서 오타가 있는 페이지에 포스트잇(Post-It)을 붙였는데, 책이 분홍 빛으로 덮였다. 콘솔 화면 캡처도 너무 흐릿해서 내용을 알아볼 수 없는 것들이 3~4개 정도 된다. 총평하자면, 좋은 책이 번역의 질로 인해 빛을 바랬다고 할 수 있겠다. 전문 번역가가 아니기 때문에 번역이 매끄럽지 않을 수 있다. 오역이 있을 수도 있다. 이런 문제들을 교정하는 작업은 최종적으로 출판사가 해줘야 하는 의무 아닌가? 최소한 최종 원고를 테크니컬 리뷰나 베타 리더들의 도움을 받았다면, 지금 보다는 훨씬 좋은 상태의 서적을 출판할 수 있었을 것이다. 개인적으로 아쉬움이 많이 남는 책이다. 조금만 더 신경 썼더라면 좋았을 텐데…… 이런 사항들이 개선된 개정판이 다시 나온다면, 책의 가치는 배가(倍加) 될 것이다.
|
|
SQL 인젝션. 요즘 보안에 대한 이슈가 많이 나오고 있어, 보안에 관련한 내용을 알아둘 필요가 있어서 구입했다. SQL인젝션은 보안 취약점 중에 대표적인 유형이란 건 알고 있지만 정확한 내용에 대해서는 모르고 있었다. 이책에서는 SQL 인젝션이 어떤 것이고 어떻게 동작하는지에 대해 잘 설명하고 있다. 다만 책이 너무 책같다는 거... 이런 류의 책은 그림으로 동작원리같은걸 좀 잘 설명해줬으면 하는데 그런게 좀 아쉽다. 소설도 아니고 너무 빽빽한 글씨가 지루하게 느껴지기도 한다. 그래도 내용은 괜찮고, 많은 걸 알려주려고 한다. 특징 SQL Injection이란 무엇인지 덧셈과 뺄셈을 하듯 공격원리와 작동원리를 이해한다. SQL Injection의 취약점을 검색하고 검증하여 자동으로 찾아낸다. 팁과 트릭을 통해 코드 내에 숨은 SQL Injection의 취약점을 발견한다. SQL Injection을 이용한 공격을 활용한다. SQL Injection 공격을 방어하기 위한 설계를 한다. |
|
내용은 정말 좋다. SQL INJECTION에 관한 상황에 대해서 |
|
이 책을 깊이 읽어보지 못 했다. 사실 안 읽었다고 하는 편이 맞을 것 같다. 책을 볼 때 되도록이면 저자의 의도를 가늠할 수 있는 머릿말을 보는 편인데, 이 책은 저자의 머릿말(서문)이 없다. 책을 쓴 의도를 모를진데 내가 책을 통해 얻고자 하는 목적을 책을 다 읽은 후에야 알 수 있다면 너무 큰 모험이 아니겠는가? 다만, 역자의 머릿말을 통해 이 책의 저작 의도를 살펴보면 다음과 같다. SQL injection 공격은 책에서도 밝히는 바와 같이 XSS 공격과 더불어 최근 보안 업계의 화두이다. 그만큼 공격 방법도 다양하고, 공격 성공에 의한 피해도 못지 않다는 얘기인데, 이러한 중요 사안에도 불구하고 이를 정리하는 책이 나오지 않았다고 한다. 말하자면 이 책이 SQL injection을 상세하게 다루는 첫 저작물이라는 것이다. 그런 의미에서 인터넷에 나뉘어진 여러 자료를 모아 하나의 자료집으로 만들었다는 점에서는 성공작이라고 할 수 있다. 책의 내용을 떠나 책의 구성이나 문체를 좀 살펴보고자 한다. 기술 서적이다 보니 신경써서 쓰지 않으면 딱딱해지기 쉽고, 책의 흥미를 떨어뜨리기 때문에 어떤 책이든 구성을 다채롭게 하여 사용자의 흥미를 불러일으키고, 문체를 읽기 쉽게 풀어쓰는 것이야 말로 좋은 책의 기본 요소라 보기 때문이다. 먼저 이 책의 구성은 SQL injection 공격의 개요로 부터 시작하여, SQL injection 공격의 종류에 대한 소개, 방어 방법 등을 설명한다. 비교적 무난한 구성이라 하겠다. 다만, chapter 2와 chapter 9는 제목이 'SQL injection 테스트'로 동일한데, 안의 내용은 다르다. 번역 과정에서 동일 단어로 치환한 것인지, 원작의 의도가 그러한지 궁금하다. 문체에 있어서는 공역의 문제점이 드러나는데, 각 장에 따라 어떤 장은 의역을 너무 많이 하여 원작의 의미를 파악하기가 쉽지 않고 어떤 장은 너무 직역 위주로 번역을 하다 보니 수동태가 난무하게 되었다. 문체 이전에 짚고 넘어갈 문제도 있는데, 이는 오탈자와 오역이다. 책을 읽다보면 심심찮게 보이는 오탈자와 오역은 정오표 없이는 이 책의 원래 내용을 유추하기 쉽지 않게 만든다. 또한, 책에 대한 몰입도를 떨어뜨리고, 내용에 충실하기 보다는 문장의 의미 일치에 더 치중하게 만든다. 따라서, 좋은 번역이라고 할 수 없다. 저자의 저작 의도도 알 수 없고, 번역도 썩 만족스럽지 못 한 책을 끝까지 읽을 수 없었던 점, 책의 역자나 출판 관계자에게 심심한 사과를 구한다. 또한 그들도 나에게 그에 상응하는 사과를 하여야 할 것이다. 귀한 시간, 낭비를 하였다는 점에서 말이다.
|