학생들과 선생님들간에 보이지 않는 수업결손 현상은 계속될 수 있다.

이번 코로나19가 장기화 됨에 따라 학교에서 ebs 수강으로 온라인 수업을 대체함에 따라서 학생들은 각자 집에서 온라인 수업으로 진행함에 따라서 몇가지 문제점들이 나타나고 있다는 언론보도가 나오고 있다. 온라인 강의를 진행하는동안 일부 학생들이 컴퓨터를 켜고 수업을 진행하는동안 게임을 하는둥 온라인 수업도중 문제점이 발생되고 온라인 강의를 듣지않고 완료시키는 방법을 사용하기 위해 웹 취약점을 아는 학생들이 편법을 사용하기 시작했다.
javascript/js/css 코드는 원천적으로 client 단의 소스이며, browser가 js를 해석해야 하기 때문에 client가 소스를 볼 수도 있고, 요즘 시대에는 internet explorer 혹은 chrome의 개발자 모드에서 전달되는 인자값을 확인할 수도 있고, 중간 값을 가로채 변조를 할 수가 있다.
예) 개발자모드의 Network 를 켠 후 웹 페이지의 특정 버튼을 눌러 어떠한 동작을 할 시 아래 jquery 값이 전달되는 항목과 값을 확인할 수 있다.

이처럼 페이지의 js 변수나 전달되는 인자값을 확인 할 수 있기때문에 중간에 변경된 값을 전달하는 것도 가능하다.
예) 남의 페이지 값을 변조하는것은 불법이므로 예를들어 script를 쓸 수 있다는 것을 보여주려고 한다.
개발자모드의 Console 탭에 들어가서 아래와 같이 alert("hello world"); 입력 시 열어둔 페이지에서 script 가 실행되는 것처럼 script 값을 전달 가능하다.

해서 필요한 것이 소스코드를 암호화 또는 ascii 코드로 변환하는 방법이 있는데, 온라인에서 인코딩으로 소스를 가리는 방법은 나와있지만 나와있는 만큼 복호화 방법도 똑같다.
ascii 코드 변환해서 코드를 알아보기 어렵게 하는 것 또한 마찬가지지만 예제를 위해 하나 보여줄 수 있다.
간단한 예로 내가 원래 사용하려 했던 소스는 alert("Hello World") 라면, 해당 문자를 ascii 코드로 변환 하면 97,108,101,114,116,40,34,72,101,108,108,111,32,119,111,114,108,100,34,41,59 가 된다.

이 값을 String.fromCharCode 함수를 사용하여 ascii 코드를 일반 문자열로 변환하고,
eval함수를 사용하여 문자열을 소스로 변환해서 실제로 소스로 사용하는 것이다.
eval(String.fromCharCode(97,108,101,114,116,40,34,72,101,108,108,111,32,119,111,114,108,100,34,41,59));
아래는 자바스크립트 실행 코드

사진으로 봤을때는 저게 무슨 말인지 ascii 코드 변환을 도로 하기 전까지는 알아볼 수가 없다.
아래는 위 코드의 실행 결과이다.
코드에서는 무슨말인지 모르지만 실제로는 제대로 동작한다.

사람들이 크롬 개발자모드 혹은 소스보기로 소스를 봤을 때 ascii 코드가 보이기 때문에 실제 값을 찾아보려면 매번 ascii 변환기에 재 변환을 해야하기 때문에 결국 복호화는 가능하지만 시간도 많이 소요되고 내가 꼭 이 소스를 시간들여서라도 봐야겠다가 아니라면 개발자도 해커도 비추한다.
script 내 소스를 ascii 정규식을 사용해서 사용자가 보게 될 코드들을 ascii 코드로 변환해서 사용하는 방법으로
결국에는 공개가 되기 때문에 원천적으로 client 단 코드에서는 작업을 최소화 하고 Server 단에서의 작업으로 최대한 돌리는 것이 최선이지만 쉽지가 않다.
이번 ebs 동영상 강의 스크립트 변조로 수강완료 처리에 대한 대처 방안으로는 여러가지 방법이 있겠지만, 캡챠를 활용하는것이 좋을 것 같다는 개인적인 견해가 있다.
일반적으로 우리가 회원가입이나 로그인 시 어떠한 특정 값을 입력하라는 것들을 많이 봤을 것이다.
'캡챠'라고 불리우는 것으로 사람이 아닌 기기나 봇을 통해 자동가입 방지에 많이 쓰인다.

때문에 강의 중간중간마다 랜덤으로 캡챠 입력기가 뜨고, 정확한 해당 값이 입력되어야 최종 강의가 마무리 되게 하는 것이다.
스크립트 변조로 강제로 강의완료로 만들어도, 중간에 캡챠의 값이 입력이 되지 않는다면, 최종적으로 완료가 되지 않게 하는 것이다.
우리가 client 언어를 사용하는 이상 완벽한 대처 방안은 사실상 없을지도 모른다.
다만 개인적인 의견으로 어딘가에는 위와 같은 방법이 쓰일 것이라고 생각하고, 나 또한 좋은 방법이 아닐까 하는 생각이 들면서,
코로나19로 학생들의 개학이 멀어지면서 온라인 강의가 계속 된다면 EBS의 보안프로그램이 설치 되기까지는 학생들과 선생님들간에 보이지 않는 수업결손 현상은 계속될 수 있다.
'프로그램개발 > IT 트렌드·팁·상식' 카테고리의 다른 글
인기 1위 코딩언어 '러스트', 실제로는 잘 안 쓰는 이유 (0) | 2020.04.23 |
---|---|
파이토치 '뜨고', 파이어폭스 '지고'··· 개발자를 위한 기술 트렌드 (0) | 2020.04.23 |
이스티오·엔보이, '웹어셈블리' 도입한다 (0) | 2020.03.19 |
악성코드 제거 mzk (0) | 2020.02.17 |
개발자에게 동업하자는 이야기 (0) | 2020.01.10 |