유저가 소스코드 짠거 업로드하면 그걸 서버에서 실행하고 결과내뱉고 할려는데
1. 서버 언어랑 다른 언어로 업로드된거 실행하는법
2. 소스코드 실행시 제한두거나 특정 라이브러리만 쓸수있게 하는법
이거 해본적 있는 분 좀 알려주셈.
Go 나 node ,python 중 하나로 서버 짤 예정
1. 서버 언어랑 다른 언어로 업로드된거 실행하는법
2. 소스코드 실행시 제한두거나 특정 라이브러리만 쓸수있게 하는법
이거 해본적 있는 분 좀 알려주셈.
Go 나 node ,python 중 하나로 서버 짤 예정
1 소스를 받아서 파일로 만듦, 명시된 언어의 컴파일러로 컴파일, 실행후 정리, 리포트
2 리눅스기준 ulimit chroot로 설정잡음
ㄱㅅㄱㅅ 그리고 악의적인 스크립트나 무한루프같은거 막는법 있을까?
실행시간 제약만큼 타이머 돌려서 죽이면됨 코드로 공격들어오는건 골때리는거 많아서 실행자체에 제약을 줘야함 자식프로세스랑 소켓접근있던데 나도 안당해본게 수두룩할듯
그리고 자식프로세스 표준출력을 받아서 웹으로 쏴줘야되는데 stdout 버퍼가 존나 커버리면 노드같은 서버는 걍 뒤져버림
구체적으로 뭘 하고싶냐면 게임(예:테트리스)의 계산 알거리즘을 제출받아서 알고리즘끼리 게임붙는걸 실시간으로 관전하는 프로그램
제출받는 알고리즘은 일정시간마다 게임 상황이 입력으로 주어지고 그 턴에 수행할 행동을 출력하는 프로그램
Ulimit chroot 로 표준라이브러리도 제한가능해?
제약을 줘본적은 없음 libc 가져올때 몇개 빠뜨리면 될거같은데
암튼 ㄱㅅㄱㅅ