포럼
요소검사라는 기능이.. 다이너마이트 랑 같네요.
2014.01.20 19:22
요소검사라는 기능이.. 다이너마이트 랑 같네요.
원래 다이너마이트가 광산개발용 으로 개발된건데, 정작 전쟁의 살상무기가 되어버린것처럼...
요소검사 기능을 만든.. 파폭이나 사파리 등이 원망스러울지경이네요
원래는 개발자용으로 만들어진 좋은 의도의 기능일텐데...
input 태그를 다 조작가능하게 해버리는 굉장히 나쁜용도로 사용이 가능해진다는게
진짜 골치네요..
과거 이 요소검사가 나오기 전에 만들어진 소스들은... input type="hidden" 를 사용해 만들어진 경우가 제법있는데
지금은 이걸 자칫잘못 쓰면 큰일이 발생하는군요.
이 hidden 값 변경하는 건.. 정말 큰 지식없이도 가능하니.. 진짜 뒷통수 맞기 딱 좋고
단지 hidden 뿐만 아니라, 일반 checkbox 나 text 형태도 아예 name 값을 바꿔서 처리해버리면 또 문제가 생길 수 있고..
오픈소스의 경우 소스를 좀 아는 사람들은 이렇게 조작도 가능하겠군요
그렇다고 input 을 안 써서 처리하는것도 여러가지로 골치아픈 부분이 많이 생기는데..
이 요소검사 쪽에 영향을 받게 input 태그를 유지할 수 있는 방법은... 없죠? ㅡㅡ;;
댓글 15
-
푸시아
2014.01.20 19:44
-
푸시아
2014.01.20 19:46
이게 해결책이라고 어디서 주서들은 바로는 히든 값들을 모두 세션 처리로 돌려서 코딩을 하는거라더군요.
-
쿡래빗
2014.01.20 19:47
매번 php에서 재검증 한다는....
-
라르게덴
2014.01.20 20:26
좀 지저분해지겠지만,
폼 로드할때 js에 따로 담아두고 폼넘길때 참조하는게 좋을거 같습니다.
-
웹엔진
2014.01.20 22:08
JS에 변수로 담는 경우도 [크롬 개발자모드 - Sources - 해당 파일] 연 후에 원하는 부분에 break point 잡으면 그 변수 콘솔로 마음껏 수정이 가능해요;;
-
라르게덴
2014.01.20 22:30
그럼 좋은 방법이 뭐가 있을까요??
-
웹엔진
2014.01.21 03:42
아래 댓글에 남겼듯이 저는 세션을 이용합니다.
-
웹엔진
2014.01.20 22:09
저는 위험한 데이터는 항상 세션을 이용합니다.
-
Lansi
2014.01.20 22:45
원래 클라이언트는 신뢰성 0이라고 생각하고 프로그래밍을 해야합니다.
요소검사뿐만이 아니라 POST 리퀘스트 날리면 폼 필터따윈 쉽게 뚫을 수 있습니다.
그러니까 서버에서 잘 처리해줘야 하죠...
저는 이렇게 넘어온 변수를 정리합니다.
$vars = Context::getRequestVars();
$args = new stdClass();
$args->document_srl = $vars->document_srl;
$args->title = $vars->title;
이렇게 처음에 정리해주면 받고 싶은 데이터만 받을 수 있죠.
-
야옹이님
2014.01.20 22:51
그렇게 하면 뭐 사이트에 문제가 생길 수 있나요?
그냥 저는 속 편하게 암호화 가능한 것은 암호화하는데...
-
sejin7940
2014.01.21 14:43
개인적으로 '요소검사' 란 기능을 기준으로 확.. 위기감이 느껴진게..
이게 진입장벽이 낮아도 너무 낮더군요. 말그대로 이런게 있다는 걸 알기만 하면..
왠만한 사람은 다 할 수 있을 정도로.. 쉽다는게 문제인거죠 ^^; 전문지식이 아예 필요가 없으니..
쇼핑몰 조금만 잘못 만들면.. 쇼핑몰 최종 결제비용 조작 따위는 물론이고..
회원등급 제어를 위해 회원정보 수정에 hidden 처리해서 사용했던걸 요소검사로 바꿔 불량회원이 멀쩡히 돌아다니면서 자랑하는걸 봤을때.. 아.. 이거 그냥 넘어갈 문제가 아니구나 싶더군요 ^^;;
-
착한악마
2014.01.21 15:49
ㅡㅡ;; 엄청나군요..무섭네요. 요즘 contact 스킨 만들면서 임의의 패스워드를 넣게 해 두었는데요.
지금 보니 이부분도 쫌 말씀하신 부분을 확인하니 걱정이네요..해당프로그램에 대한 책임을 지지 않는다는 문구를 넣어야 겠습니다.
-
scepter83
2014.01.22 14:38
기본적으로 클라이언트가 제출하는 모든 데이터는 위변조 될 수 있다고 가정하고 개발을 해야 합니다. 말씀하신 요소검사 -> html 값 변경도 가능하고, js와 css 코드 조작도 가능합니다. ajax 통신을 이용하는 부분은 보안 위험에 더욱 노출되어 있다고 볼 수 있고요.
위에 몇 분이 말씀하셨듯이 제일 좋은건 서버단에서 체크, 관리하는건데 성능 부담때문에 모든걸 적용할 수는 없으니, 조작되어도 문제가 없는 기능은 클라이언트로 처리를 일부 분산시키는 것이죠..
보안에 주의깊게 신경쓰고 개발하지 않는 이상, xe로 구현된 사이트는 너무 많은 허점들에 노출되어 있다고 봅니다.
-
銀童
2014.01.22 16:36
잘못된 부분이 있어서 정정합니다.
ajax 통신이 보안위험에 더 노출되어있는건 아닙니다.
POST, GET 을 사용하는건 어차피 똑같은데 왜 ajax 는 더 보안위험에 노출되어있고,
그냥 일반 POST, GET 은 보안 위험이 없는건 아니지요.
어차피 서버에서 모든 필요한 데이터를 '검증'하는건 당연한 과정입니다.
그게 ajax 는 더 해야도 되고 일반 HTTP 리퀘스트 ( 이걸 ajax 와 구별하는 이유조차 저는 이해할수 없습니다만, )
라고 안해도 되는건 아니거든요.
-
멀티비타민
2014.01.23 13:02
폼이 조작하면 조작이 되는군요..
세션쪽을 처리하는 방법이 제일 안전한듯하네요
전부다 js 처리를 해서 document submit 을 해야 할까요? 안타까워요.