dayendar

本サイトが提示する下記のベストプラクティスを実行するプロジェクトは、Open Source Security Foundation (OpenSSF) バッジを達成したことを自主的に自己認証し、そのことを外部に示すことができます。

これがあなたのプロジェクトなら、あなたのプロジェクトページにあなたのバッジステータスを表示してください!バッジステータスは次のようになります。 プロジェクト 7986 のバッジ レベルは in_progress です バッジステータスの埋め込み方法は次のとおりです。

これらは合格レベルの基準です。シルバーまたはゴールドレベル基準を表示することもできます。

        

 基本的情報 13/13

  • 識別情報

    Dayendar for advanced day calendar operations

    どのようなプログラミング言語を使ってプロジェクトを実装していますか?
  • 基本的なプロジェクト ウェブサイトのコンテンツ


    プロジェクトのウェブサイトは、ソフトウェアが何をするのか(何の問題を解決するのか)を簡潔に記述しなければなりません。 [description_good]

    Through the README.md file hosted on GitHub and Rust Crates.io: https://crates.io/crates/dayendar or https://github.com/racherb/dayendar/blob/dev/README.md



    プロジェクトのウェブサイトは、取得方法、フィードバックの提供方法(バグ報告や拡張機能)、ソフトウェアへの貢献方法に関する情報を提供しなければなりません。 [interact]


    貢献する方法に関する情報は、貢献プロセス(たとえばプル リクエストが使用されか、など)を説明する必要があります。 (URLが必要です) [contribution]

    Non-trivial contribution file in repository: https://github.com/racherb/dayendar/blob/dev/CONTRIBUTING.md.



    貢献する方法に関する情報は、貢献を受け入れるための要件(たとえば、必要なコーディング標準への参照)を含むべきです。 (URLが必要です) [contribution_requirements]

    The requirements for contributions are clearly stated in the documents CONTRIBUTING.md and README.md: https://github.com/racherb/dayendar/blob/HEAD/CONTRIBUTING.md


  • FLOSSライセンス

    プロジェクトのライセンスはどのようなものですか?



    プロジェクトによって作成されたソフトウェアは、FLOSSとしてリリースされなければなりません。 [floss_license]

    The Apache-2.0 license is approved by the Open Source Initiative (OSI).



    プロジェクトによって作成されたソフトウェアに必要なライセンスは、オープンソース・イニシアチブ(OSI)によって承認されていることが推奨されています。 [floss_license_osi]

    The Apache-2.0 license is approved by the Open Source Initiative (OSI).



    プロジェクトは、結果のライセンスをソースリポジトリの標準的な場所に投稿しなければなりません。 (URLが必要です) [license_location]

    Non-trivial license location file in repository: https://github.com/racherb/dayendar/blob/dev/LICENSE.


  • ドキュメンテーション


    プロジェクトは、プロジェクトによって作成されたソフトウェアに関する基本的なドキュメンテーションを提供しなければなりません。 [documentation_basics]

    Documentation published in crates.io: https://docs.rs/dayendar/latest/dayendar/



    プロジェクトは、プロジェクトによって作成されたソフトウェアの外部インタフェース(入力と出力の両方)を記述する参照ドキュメントを提供しなければなりません。 [documentation_interface]

    The project provides full reference documentation describing the external interface of our software. This documentation is written directly into the code as documentation comments and is automatically generated in HTML format using the rustdoc tool included with Rust. The generated documentation is available at [https://docs.rs/dayendar/latest/dayendar/] for easy reference without the need to go through the entire source code. In addition, our README.md file in the repository provides basic information and relevant links to help users and developers understand and use our software correctly.


  • その他


    プロジェクトサイト(ウェブサイト、リポジトリ、およびダウンロードURL)は、TLSを使用したHTTPSをサポートしなければなりません。 [sites_https]

    Given only https: URLs.



    プロジェクトは、議論(提案された変更や問題を含む)のための1つ以上の検索可能なメカニズムを持たなければならず、メッセージやトピックがURLでアドレス指定され、新しい人々がディスカッションのいくつかに参加できるようにしなければならず、クライアント側でプロプライエタリなソフトウェアのインストールを必要としないようにします。 [discussion]

    GitHub supports discussions on issues and pull requests.



    プロジェクトは英語で文書を提供し、英語でコードに関するバグ報告とコメントを受け入れることができるべきです。 [english]

    All documentation is provided in English.



    プロジェクトはメンテナンスされている必要があります。 [maintained]


(詳細)このバッジエントリを編集する権限を持つユーザーは? 現在:[]



  • 公開されたバージョン管理ソースリポジトリ


    プロジェクトには、公開され、URLを持つ、バージョン管理のソース リポジトリがなければなりません。 [repo_public]

    Repository on GitHub, which provides public git repositories with URLs.



    プロジェクトのソース リポジトリは、どのような変更が行われたのか、誰が変更を行ったのか、いつ変更が行われたのかを追跡しなければなりません。 [repo_track]

    Repository on GitHub, which uses git. git can track the changes, who made them, and when they were made.



    共同レビューを可能にするために、プロジェクトのソースリポジトリには、リリース間のレビューのための中間バージョンが含まれなければなりません。最終リリースのみを含めることはできません。 [repo_interim]


    プロジェクトのソース リポジトリに共通の分散バージョン管理ソフトウェア(gitなど)を使用することを推奨します。 [repo_distributed]

    Repository on GitHub, which uses git. git is distributed.


  • 一意的なバージョン番号


    プロジェクトの結果には、ユーザーが使用することを意図されたリリースごとに固有のバージョン識別子が必要です。 [version_unique]

    We use semantic versioning to tag our releases. Additionally, we include the commit identifier: https://github.com/racherb/dayendar/releases/



    リリースには、Semantic Versioning (SemVer)またはCalendar Versioning (CalVer)のバージョン番号形式を使用することが推奨されます。CalVerを使用する場合は、マイクロレベル値を含めることが推奨されます。 [version_semver]


    プロジェクトがバージョン管理システム内の各リリースを特定することが推奨されています。たとえば、gitを使用しているユーザーがgitタグを使用して各リリースを特定することが推奨されています。 [version_tags]

  • リリースノート


    プロジェクトは、各リリースにおいて、ユーザーがアップグレードすべきかどうか、また、アップグレードの影響を判断できるよう、そのリリースの主要な変更の要約を説明したリリースノートを提供しなければなりません(MUST)。リリースノートは、バージョン管理ログの生の出力であってはなりません(例えば、 "git log"コマンドの結果はリリースノートではない)。プロジェクトの成果物が複数の場所で再利用されることを意図していないプロジェクト(単独のウェブサイトやサービスのためのソフトウェアなど)で、かつ、継続的・断続的な配布を行う場合は、「該当なし」を選択することができます。 (URLが必要です) [release_notes]

    // No release notes file found.



    リリースノートでは、このリリースで修正された、リリースの作成時にすでにCVE割り当てなどがあった、公に知られているランタイムの脆弱性をすべて特定する必要があります。 ユーザーが通常、ソフトウェアを実際に更新できない場合(たとえば、カーネルの更新によくあることです)、この基準は該当なし(N/A)としてマークされる場合があります。 この基準はプロジェクトの結果にのみ適用され、依存関係には適用されません。 リリースノートがない場合、または公に知られている脆弱性がない場合は、[N/A]を選択します。 [release_notes_vulns]

  • バグ報告プロセス


    プロジェクトは、ユーザーが不具合報告を送信するプロセスを提供しなければなりません(たとえば、課題トラッカーやメーリングリストを使用します)。 (URLが必要です) [report_process]


    プロジェクトは、個々の課題を追跡するための課題トラッカーを使用するべきです。 [report_tracker]

    Issue Tracker through GitHub



    このプロジェクトは、過去2〜12か月間に提出された多数のバグ報告の受領を認めなければなりません。応答に修正を含める必要はありません。 [report_responses]

    By using GitHub's Issue Tracker, we ensure that every bug report or issue submitted is logged, timestamped, and available for review by the development team. GitHub's notification system ensures that the repository maintainers and contributors are informed of new issues when they are created. This facilitates timely acknowledgment. Furthermore, GitHub provides features like comments, reactions (e.g., thumbs up, thumbs down), and labels. These can be used to acknowledge bug reports. Even if a fix is not immediately available, team members can comment on the issue to acknowledge its receipt, provide interim solutions, or request further information. This ensures open communication with the reporter and demonstrates that the project is actively monitored and maintained. Thus, by utilizing the features and notifications of GitHub's Issue Tracker, we can efficiently acknowledge and respond to the majority of bug reports within the specified timefram



    プロジェクトは、直近2〜12ヶ月(2ヶ月を含む)に増強要求の多数(> 50%)に対応すべきです。 [enhancement_responses]

    Using GitHub's Issue Tracker, we have a centralized system to monitor, label, and categorize enhancement requests. With the labeling feature, we can specifically tag issues as "enhancements" and ensure they are addressed. The platform's built-in notification and commenting system ensures that maintainers are informed and can respond, even if the response is a simple acknowledgment, discussion, or a 'no'. By actively engaging with these enhancement requests, we demonstrate that the project remains active and responsive to user feedback.



    プロジェクトは、後で検索するために、レポートとレスポンスのアーカイブを公開する必要があります。 (URLが必要です) [report_archive]

    By hosting our project on GitHub, every issue (which includes bug reports, enhancement requests, etc.) and its associated responses are inherently archived and publicly accessible. GitHub's Issue Tracker provides a history of all interactions, ensuring transparency and availability for later review or searching: https://github.com/racherb/dayendar/issues


  • 脆弱性報告プロセス


    プロジェクトは、脆弱性を報告するプロセスをプロジェクト サイトに公開しなければなりません。 (URLが必要です) [vulnerability_report_process]


    プライベート脆弱性報告がサポートされている場合、プロジェクトは、プライベートに保持された方法で情報を送信する方法を含んでいなくてはなりません。 (URLが必要です) [vulnerability_report_private]


    過去6ヶ月間に受け取った脆弱性報告に対するプロジェクトの初期応答時間は、14日以下でなければなりません。 [vulnerability_report_response]

  • 作業ビルドシステム


    プロジェクトによって作成されたソフトウェアを利用するためにビルドが必要な場合、プロジェクトは、ソース コードからソフトウェアを自動的にリビルドできる作業ビルド システムを提供しなければなりません。 [build]

    Through gitHub Action. Currently there are two workflows. One of them compiles the code and runs the automated unit tests.



    ソフトウエアをビルドするために、一般的なツールを使用することをお勧めします。 [build_common_tools]

    Cargo, Rust's standard package manager and build system, is used to build software. Cargo is widely recognised and used in the Rust community for dependency management, build, testing and other tasks related to the software development lifecycle. Instructions for building the project using Cargo are available in our README.md file at https://github.com/racherb/dayendar/blob/dev/README.md.



    プロジェクトは、FLOSSツールだけを使用してビルドができるようにするべきです。 [build_floss_tools]

    The project uses Rust and Cargo for building and dependency management, both are open source tools distributed under MIT/Apache-2.0 licenses. All dependencies and additional tools used in the project are FLOSS, ensuring that the project is buildable using only free and open source software tools.


  • 自動テスト スイート


    プロジェクトは、FLOSSとして公開されている自動テストスイートを少なくとも1つ使用する必要があります(このテストスイートは、別個のFLOSSプロジェクトとして維持される場合があります)。 プロジェクトは、テストスイートの実行方法を明確に示すか文書化する必要があります(たとえば、継続的インテグレーション(CI)スクリプトを介して、またはBUILD.md、README.md、CONTRIBUTING.mdなどのファイルの文書を介して)。 [test]

    The project uses the Rust integrated test system to implement automated tests. These tests are included in the public repository and can be run using cargo test. The tests and the project code are released under the Apache-2.0 licence and are fully FLOSS. Instructions for running the tests are documented in our CONTRIBUTING.md file https://github.com/racherb/dayendar/blob/dev/CONTRIBUTING.md, as appropriate). In addition, we have configured GitHub Actions to automatically run these tests on every commit, ensuring the quality and functionality of the code.



    テスト スイートは、その言語の標準的な方法で呼び出すことができるべきです。 [test_invocation]

    Executing "cargo test"



    テスト スイートは、コードブランチ、入力フィールド、および機能のほとんど(または理想的にはすべて)をカバーすることが推奨されています。 [test_most]


    プロジェクトは、継続的インテグレーション(新しいコードまたは変更されたコードが頻繁に中央コードリポジトリに統合され、その結果に対して自動テストが実行される)を実装することを推奨されています。 [test_continuous_integration]

  • 新機能テスト


    プロジェクトは、プロジェクトで作成されたソフトウェアに主要な新機能が追加されたときに、その機能のテストを自動化されたテスト スイートに追加する必要があるという一般的な方針(正式でも、正式でなくても構いません)を持っていなければなりません。 [test_policy]


    プロジェクトによって作成されたソフトウェアの最新の大きな変更で、テストを追加するための test_policy が守られているという証拠がプロジェクトに存在しなければなりません。 [tests_are_added]


    テストを追加するこのポリシー(test_policyを参照)を変更提案に関する手順で文書化することを推奨します。 [tests_documented_added]

  • 警告フラグ


    プロジェクトは、選択した言語でこの基準を実装することができる少なくとも1つのFLOSSツールがあれば、1つまたは複数のコンパイラ警告フラグ、「安全」言語モードを使用可能にするか、分離 「リンター」ツールを使用してコード品質エラーまたは共通の単純なミスを検索しなければなりません。 [warnings]

    The project uses the rustc compiler which, by default, triggers a number of warnings to ensure code quality and prevent common bugs. In addition, we use Clippy, a Rust-specific linting tool, which provides additional suggestions and warnings to improve code quality and readability. Instructions on how to use these tools are documented in our CONTRIBUTING.md file.



    プロジェクトは警告を出さなければならない。 [warnings_fixed]

    The project actively monitors and addresses warnings generated by the rustc compiler and the Clippy linting tool. We strive to maintain high quality code and fix all relevant warnings. In cases where we consider a warning to be a false positive, we flag it and document it in the source code.



    プロジェクトによって作成されたソフトウェアにある警告に、実際的な場合には、最大限に厳格になることを推奨されています。 [warnings_strict]

    The Rust project follows a policy of being as strict as possible with warnings and bugs. We use the rustc compiler and Clippy linting tool with strict settings to detect and correct problems in the early stages of development. In addition, our continuous integration (CI) ensures that any new code meets these strict standards. Our policy and practices regarding warnings are clearly documented in our CONTRIBUTING.md file.


  • セキュリティに関する開発知識


    プロジェクトには、安全なソフトウェアを設計する方法を知っている少なくとも1人の主要な開発者が必要です。 (正確な要件については、「詳細」を参照してください。) [know_secure_design]


    プロジェクトの主要開発者の少なくとも1人は、この種のソフトウェアの脆弱性につながる一般的な種類のエラーを知っていなければならず、それぞれを対策または緩和する少なくとも1つの方法を知っていなければなりません。 [know_common_errors]

  • 優良な暗号手法を使用する

    一部のソフトウェアは暗号化メカニズムを使用する必要がないことに注意してください。あなたのプロジェクトが作成するソフトウェアが、(1) 暗号化機能を含む、アクティブ化する、または有効化し、(2) 米国(US)から米国外または米国市民以外にリリースされる可能性がある場合は、法的に義務付けられた追加手順の実行を要求される可能性があります。通常、これにはメールの送信が含まれます。詳細については、 Understanding Open Source Technology & US Export Controls「オープンソース技術と米国の輸出管理について」)の暗号化のセクションを参照してください。

    プロジェクトによって作成されたソフトウェアは、デフォルトで、一般に公開され、専門家によってレビューされている暗号プロトコルとアルゴリズムを使用しなければなりません。(暗号プロトコルとアルゴリズムが使用される場合) [crypto_published]


    プロジェクトによって作成されたソフトウェアがアプリケーションまたはライブラリであり、主な目的が暗号の実装でない場合、暗号機能を実装するために特別に設計されたソフトウェアを呼び出すだけにするべきです。自分用に(暗号機能を)再実装するべきではありません。 [crypto_call]


    暗号に依存するプロジェクトによって作成されるソフトウェアのすべての機能は、FLOSSを使用して実装可能でなければなりません。 [crypto_floss]


    プロジェクトによって作成されたソフトウェア内にあるセキュリティ メカニズムは、少なくとも、2030年までのNIST最小要件(2012年)を満たすデフォルト鍵長を使用しなければなりません。より小さな鍵長を完全に無効になるおうに、ソフトウェアを構成できなければなりません。 [crypto_keylength]


    プロジェクトによって生成されたソフトウェア内のデフォルトのセキュリティメカニズムは、壊れた暗号化アルゴリズム(MD4、MD5、シングルDES、RC4、Dual_EC_DRBGなど)に依存したり、実装する必要がない限り、コンテキストに不適切な暗号化モードを使用したりしてはなりません。相互運用可能なプロトコル(実装されたプロトコルがネットワークエコシステムによって広くサポートされている標準の最新バージョンであり、そのエコシステムではそのようなアルゴリズムまたはモードの使用が必要であり、そのエコシステムはこれ以上安全な代替手段を提供しません)。これらの壊れたアルゴリズムまたはモードが相互運用可能なプロトコルに必要な場合、ドキュメントには、関連するセキュリティリスクと既知の緩和策を記載する必要があります。 [crypto_working]


    プロジェクトによって作成されたソフトウェア内のデフォルトのセキュリティ メカニズムは、既知の重大な脆弱性を持つ暗号アルゴリズムやモード(たとえば、SHA-1暗号ハッシュ アルゴリズムまたはSSHのCBC モード)に依存するべきではありません。 [crypto_weaknesses]


    プロジェクトによって作成されたソフトウェア内のセキュリティ メカニズムは、鍵合意プロトコルのための完全な順方向秘密を実装するべきなので、もし長期鍵が将来侵害された場合でも、長期鍵のセットから導出されるセッション鍵は侵害されません。 [crypto_pfs]


    プロジェクトによって作成されたソフトウェアが外部ユーザーの認証用のパスワードの保存を引き起こす場合、パスワードは、キーストレッチ(反復)アルゴリズム(Argon2id、Bcrypt、Scrypt、PBKDF2など)を使用して、ユーザーごとのソルトで反復ハッシュとして保存される必要があります。OWASP Password Storage Cheat Sheetも参照してください)。 [crypto_password_storage]


    プロジェクトによって作成されたソフトウェア内のセキュリティ メカニズムは、暗号学的にセキュアな乱数発生器を使用して、すべての暗号鍵とナンスを生成しなければなりません。暗号学的にセキュアでない発生器を使用してはいけません。 [crypto_random]

  • MITM(man-in-the-middle:中間者)攻撃に対応できる安全な配信


    プロジェクトは、MITM攻撃に対抗する配信メカニズムを使用しなければならない。httpsまたはssh+scpを使用することは許容されます。 [delivery_mitm]


    暗号ハッシュ(たとえばSHA1SUM)は、http経由で運んではならず、暗号署名をチェックすることなしに使用してはいけません。 [delivery_unsigned]

  • 広く知られた脆弱性を修正


    60日を超えて公的に知られている中程度または重大度のパッチが適用されていない脆弱性は存在してはなりません。 [vulnerabilities_fixed_60_days]


    プロジェクトは、すべての重要な脆弱性を、報告された後迅速に修正するべきです。 [vulnerabilities_critical_fixed]

  • その他のセキュリティ上の課題


    公開リポジトリは、パブリックアクセスを制限するための有効なプライベートクレデンシャル(たとえば、有効なパスワードやプライベートキー)を漏らしてはなりません。 [no_leaked_credentials]

  • 静的コード解析


    選択した言語でこの基準を実装するFLOSSツールが少なくとも1つある場合、少なくとも1つの静的コード分析ツール(コンパイラの警告と「安全な」言語モード以外)を、ソフトウェアの主要な製品リリースの提案に、リリース前に適用する必要があります。 [static_analysis]

    Rust inherently emphasizes safety through its type system and ownership properties. To meet the above requirement, beyond the compiler's assurances: Clippy: A linting tool for Rust, it detects common errors, suggests improvements, and ensures adherence to Rust's best practices. While Rustc has its built-in linter, Clippy provides more detailed, specific checks. Cargo-audit: This tool checks Rust project dependencies for known vulnerabilities, referencing the RustSec Advisory Database. Before a major production release, running Clippy ensures lint-free code, and Cargo-audit verifies the absence of known vulnerable dependencies. By using these tools, we leverage both Rust's built-in security capabilities and additional open-source tools to ensure software quality and safety.



    static_analysis基準に使用される静的解析ツールの少なくとも1つが、分析された言語または環境における共通の脆弱性を探すためのルールまたはアプローチを含むことが、推奨されています。 [static_analysis_common_vulnerabilities]

    For Rust projects, while the language's design inherently mitigates many common vulnerabilities, we can still employ tools that further scrutinize the codebase for potential issues: Clippy: Beyond linting for code quality, some of Clippy's lints can indirectly identify code patterns that might lead to vulnerabilities, especially when they deviate from Rust's idiomatic practices. Cargo-audit: Directly addresses the criterion's suggestion. It scans the project's dependencies for known security vulnerabilities, ensuring that the software doesn't inadvertently include libraries with recognized vulnerabilities. By integrating both Clippy and Cargo-audit into the development workflow, we not only uphold Rust's safety principles but also actively scan for common vulnerabilities, aligning with the requirement's intent.



    静的コード解析で発見された中程度および重大度の悪用可能な脆弱性はすべて、それらが確認された後、適時に修正されなくてはなりません。 [static_analysis_fixed]


    静的ソースコード解析は、コミットごと、または少なくとも毎日実行することをお勧めします。 [static_analysis_often]

    Static analysis through "cargo clippy" and "cargo audit" are automated through GitHub Actions flows.


  • 動的コード分析


    リリース前に、ソフトウェアの主要な製品リリースに少なくとも1つの動的解析ツールを適用することが示唆されています。 [dynamic_analysis]

    For dynamic code analysis we are enabling the use of "cargo fuzzy".



    プロジェクトで作成されたソフトウェアにメモリ安全でない言語(CやC ++など)を使用して作成されたソフトウェアが含まれている場合、少なくとも1つの動的ツール(たとえば、ファジーまたはウェブ アプリケーション スキャナ)を、バッファの上書きなどのメモリの安全性の問題を検出するメカニズムと一緒にいつも使用します。プロジェクトがメモリ安全でない言語で書かれたソフトウェアを作成しない場合は、「該当なし」(N/A)を選択します。 [dynamic_analysis_unsafe]

    In our project we use the Rust programming language which is characterised by memory safety, however, we apply fuzzing techniques through "cargo fuzz".



    プロジェクトでは、多くのアサーションを可能にする少なくとも一部の動的分析(テストやファジングなど)の構成を使用することをお勧めします。多くの場合、これらのアサーションは本番ビルドでは有効にしないでください。 [dynamic_analysis_enable_assertions]


    動的コード分析で発見されたすべての中程度および重大度の悪用可能な脆弱性は、確認された後、適時に修正されなければなりません。 [dynamic_analysis_fixed]


このデータは、Creative Commons Attribution version 3.0以降のライセンス(CC-BY-3.0 +)のもとで利用できます。すべての人がデータを自由に共有および適応できますが、適切にクレジットを入れる必要があります。 Raciel HernándezとOpenSSFベストプラクティス バッジ貢献者のクレジットを入れてください。

プロジェクト バッジ登録の所有者: Raciel Hernández.
エントリの作成日時 2023-10-21 14:07:03 UTC、 最終更新日 2023-10-23 01:07:11 UTC

もどる