dart-lang/markdown패키지에 기여를 했다.

image.png

기여 내용은 Commonmark의 Spec에서 Link의 url에 URL-Escaping이 포함되어 있으면 그건 건들지 말고 XSS공격에 대응해야 하는데, 그렇게 되있지 않아 url encoding과정을 건들였다.

처음엔 markdown 패키지를 업데이트 한 후 내 잘나오던 이미지들이 왜 안나오지 하고 찾아보다가 알게되었다.

또 작업한지 몇시간만에 merge가 되었다.

배운 것

  • Commonmark, GFM같은 Markdown Spec을 갖추기 위해 직접 그 사이트들에서 테스트 Input Output들을 받아와 실제 결과물이 일치하는지 확인하는 과정의 테스트가 재미있었다. 이 Repository에 test/**/*.unit 파일들이 그 테스트 spec들이다.
  • URL Encoding이 생각보다 복잡한 과정으로 이루어진다는 것을 알았다. 내 코드에선 그냥 %[0-9A-Fa-f]{2} regex를 썼을 뿐이지만, 실제 Dart 코드를 들여다보면 Uri.encodeFull 인지, Uri.encodeComponent, Uri.encodeQueryXXX 인지에 따라 각각 %XX 포맷에서 비트셋을 정의해두고 해당 함수가 파싱해야 하는 URL-Escaping들만 파싱함을 알 수 있다.

Categories:

Updated:

Comments