저는 현재 rcon을 통해 내 gameserver와 상호 작용하고 문제를 발견 한 Discord Bot에 대해 작업하고 있습니다.사용자 정의 문자열에서 구분 기호 사용을 올바르게 피하는 방법은 무엇입니까?
두 가지 기능이 있습니다. 이 명령을 인식하는 로봇입니다
@bot.command(pass_context=True, aliases=[])
@asyncio.coroutine
def say(context, *, msg):
yield from bot.say("```{0}```".format(rcon.rcon_say(msg)))
두 번째 함수 내 게임 서버로 전송합니다 (예를 들어 '을 안녕하세요을 .say'). 이 경우 'Hello World'라고 말하면 서버가 채팅에 'Hello World'라고 말하게됩니다.
def rcon_say(_msg : str):
with RCON(SERVER_ADDRESS, PASSWORD) as rcon:
return rcon("say {0}".format(_msg))
문제 : .say "테스트; 킥 USER1은"서버에 두 명령을 보내드립니다 : 다른 RCON 명령 때문에 그 abusable
say test
kick user1
합니다. 어떻게하면 학대당하는 것을 피할 수 있을까요?
나는 abusage 방지하기 위해 무슨 짓을 : 기능 다음
내가 추가를 :
def checkMsg(checkThis : str):
if ";" in checkThis:
raise errors.SemicolonError()
return
else:
return checkThis
그리고
_msg = checkMsg(_msg)
그래서이 어떻게 든 돈을 사용자의 입력에서 세미콜론을 제거하지만 난 것이다 추가 이것을하는 것이 올바른 방법이라고 생각하지 않습니다. 세미콜론 (유니 코드 등으로 디코딩되었을 수도 있음)을 보낼 수 있습니까?
나는 그것을 안전 할까, 또는 악용하는 방법이 있습니까?
해야? –