Ruby 보안을 향상시키는 쉬운 방법

4566 단어 rubyrailssecurity
Ruby 커뮤니티의 많은 사람들이 Rubocop 에 대해 들어봤으며 일종의 애증 관계가 있을 수 있습니다. 이 편광 보석에 대해 들어본 적이 없다면 Rubocop 문서에서 직접 수행하는 작업의 요지가 있습니다.

RuboCop is a Ruby static code analyzer (a.k.a. linter) and code formatter. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide.



그러나 Rubocop은 단순히 스타일 지침을 시행하기 위한 것이 아닙니다. 보안 모범 사례를 적용하기 위해 Rubocop을 사용할 수 있다는 사실을 알고 계셨습니까?



네! 좋아요! Rubocop에는 보다 안전한 Ruby 및 Rails 코드를 작성하는 데 도움이 되는 세트Security Cops가 내장되어 있습니다. 경찰은 다음과 같습니다.

  • Security/Eval - eval 사용은 심각한 보안 위험을 나타냅니다.

  • Security/JSONLoad - 잠재적인 보안 문제로 인해 JSON.parse보다 JSON.load를 사용하는 것이 좋습니다. 자세한 내용은 ruby docs을 참조하십시오.

  • Security/MarshalLoad - 잠재적인 보안 문제로 인해 Marshal.load 또는 Marshal.restore를 사용하지 마십시오. 자세한 내용은 ruby docs을 참조하십시오.

  • Security/Open - Kernel#open의 사용은 심각한 보안 위험을 나타냅니다.

  • Security/YAMLLoad - 잠재적인 보안 문제로 인해 YAML.safe_load보다 YAML.load를 사용하는 것이 좋습니다. 자세한 내용은 ruby docs을 참조하십시오.

  • 보안 경찰 외에도 코드 보안을 개선할 수 있는 몇 가지 다른 경찰이 있습니다.

  • Rails/OutputSafety - html_safe 또는 raw를 사용하면 보안 위험이 발생할 수 있습니다. 종종 이를 사용하면 cross site scripting 취약점이 발생할 수 있습니다.

  • Style/MutableConstant - 가변 개체를 상수에 할당하지 마십시오. 이것의 보안 영향은 덜 명확할 수 있습니다. 예를 들어 실수로 user data 라는 상수를 업데이트한 다음 해당 상수가 다른 사용자에게 사용되면 갑자기 데이터가 누출됩니다. 이러한 이유로 상수는 항상 변경할 수 없도록 하는 것이 가장 좋습니다.

  • 보안 경찰만 활성화하는 방법



    성가신 스타일의 경찰이 아닌 보안 경찰만을 위해 Rubocop을 사용하고 싶다면 😉 설정 방법은 다음과 같습니다. 먼저 install the gem이 필요합니다.

    gem install rubocop
    


    또는 Gemfile을 사용하는 경우...

    gem 'rubocop', require: false
    


    gem이 설치되면 홈 디렉토리에 있는 rubocop.yml 파일로 gem을 구성할 수 있습니다. 보안 중심 경찰을 활성화하려면 yaml 파일이 다음과 같아야 합니다 👇

    AllCops:
      DisabledByDefault: true
    
    Rails/OutputSafety:
      Enabled: true
    
    Security:
      Enabled: true
    
    Style/MutableConstant:
      Enabled: true
    


    그런 다음 실행만 하면 됩니다!

    $ rubocop
    


    기본 사용 체크아웃에 대한 추가 정보는 rubocop docs .

    행복한 코딩! 😃

    좋은 웹페이지 즐겨찾기