2017-10-27 24 views
0
의 암호 브라켓과 URL을 혼동

파이썬 2.7 (이뿐만 아니라 파이썬 3에서 자신을 각성 있지만)파이썬 : urlparse IPv6를

우리는 형태의 URL을 전체 데이터베이스가 있습니다

ftp://username1:[email protected]/ ftp://username2:[email protected]/

암호를 암호화하여 별도의 열에 저장해야합니까? 아마.

사용자 중 한 명이 배치 작업 계정의 비밀번호를 최근에 괄호를 포함하도록 변경했습니다. 이 스크립트를 urlparse 할 때마다 스크립트가 충돌합니다. Urlparse는 잘못된 형식의 IPv6 주소로 해석합니다. 나는 이것이 @ 기호를 존중하지 않는 urlparse의 실패라고 생각하지만 잘못 될 수있다.

어쨌든이 작업을 처리하기 위해 다시 활성화 된 기존 시스템이 있지만 이상적이지 않습니다. 이 문제를 어떻게 처리 할 것인가에 대한 생각은 없습니까? urlparse에 대한 대안이 있습니까?

Python3 equiv에는 동일한 문제가 있습니다. 내가 고칠 것이라는 것을 안다면 나는 파이썬 3으로 업그레이드하는 고통을 겪을 것이다.

+1

대괄호 ('\ ['(아마 not))를 이스케이프 할 수 있습니까? 또는 (% 5b') 그것을 urlencode? –

+1

누가 ftp를 사용합니까? 어쨌든이 일반 텍스트 암호와 ftp 서버가 부팅 할 수있는 이유는 무엇입니까 –

+0

기업은 여전히 ​​허용 된 FTP/SFTP를 사용하여 일반 데이터 전송을 믿습니다. 아니요, URL 인코딩 및 이스케이프를 시도했습니다. 기쁨이 없었습니다. – TrevorB

답변

3

요약 : 파이썬은 올바르게 동작합니다. 올바른 행동이 무엇인지에 대한 이해가 잘못되었습니다.


URI의 구문은 RFC 4986에 정의되어 있습니다. userinfo (즉 username 또는 username:password)에 대한 관련 부분은 '['더 일반이 userinfo 내에서 허용되지 않습니다 것을 분명하게 말한다 :

authority  = [ userinfo "@" ] host [ ":" port ] 
userinfo  = *(unreserved/pct-encoded/sub-delims/":") 

pct-encoded = "%" HEXDIG HEXDIG 
unreserved = ALPHA/DIGIT/"-"/"."/"_"/"~" 
sub-delims = "!"/"$"/"&"/"'"/"("/")" 
      /"*"/"+"/","/";"/"=" 

으로는이 '['unreservedsub-delims의의 어느 부분을 알 수있다. 즉,이 문자를 백분율 인코딩 (예 : %5B)으로 인코딩해야합니다.

+0

흠 좋습니다. URL 인코딩을 시도했지만 너무 많이 캡처한다고 생각합니다. 이 경우 브래킷 만 인코딩 해 봅니다. 귀하의 의견을 보내 주셔서 감사합니다; 월요일에 다시보고합니다. – TrevorB