detect-secrets
เป็นโมดูลที่มีชื่อเหมาะสมสำหรับ (เซอร์ไพรส์, เซอร์ไพรส์) ในการตรวจจับความลับ ภายในฐานโค้ด
อย่างไรก็ตาม แตกต่างจากแพ็คเกจอื่นๆ ที่คล้ายกันที่มุ่งเน้นการค้นหาความลับเพียงอย่างเดียว แพ็คเกจนี้ได้รับการออกแบบโดยคำนึงถึงไคลเอนต์ระดับองค์กรเป็นหลัก: ให้วิธีการที่เป็นระบบ ที่เข้ากันได้แบบย้อนหลัง :
ป้องกันไม่ให้ความลับใหม่เข้าสู่ฐานรหัส
การตรวจจับว่าการป้องกันดังกล่าวถูกเลี่ยงอย่างชัดเจนหรือไม่ และ
จัดเตรียมรายการตรวจสอบความลับที่จะเปิดเผย และย้ายไปยังที่เก็บข้อมูลที่ปลอดภัยยิ่งขึ้น
ด้วยวิธีนี้ คุณจะสร้างการแยกความกังวล โดยยอมรับว่า ขณะนี้ อาจมีความลับซ่อนอยู่ในพื้นที่เก็บข้อมูลขนาดใหญ่ของคุณ (นี่คือสิ่งที่เราเรียกว่า ข้อมูลพื้นฐาน ) แต่ป้องกันไม่ให้ปัญหานี้ใหญ่ขึ้น โดยไม่ต้องจัดการกับความพยายามที่อาจมหาศาล ของการขจัดความลับที่มีอยู่ออกไป
โดยดำเนินการเอาต์พุตส่วนต่างเป็นระยะกับคำสั่ง regex ที่สร้างขึ้นตามหลักการศึกษาสำนึก เพื่อระบุว่ามีการส่งความลับ ใหม่ ใดๆ หรือไม่ วิธีนี้จะช่วยหลีกเลี่ยงค่าใช้จ่ายในการขุดค้นประวัติ git ทั้งหมด รวมถึงความจำเป็นในการสแกนพื้นที่เก็บข้อมูลทั้งหมดทุกครั้ง
หากต้องการดูการเปลี่ยนแปลงล่าสุด โปรดดูที่ CHANGELOG.md
หากคุณต้องการมีส่วนร่วม โปรดดูที่ CONTRIBUTING.md
สำหรับเอกสารที่มีรายละเอียดเพิ่มเติม โปรดดูเอกสารอื่นๆ ของเรา
สร้างข้อมูลพื้นฐานของความลับที่อาจพบได้ในพื้นที่เก็บข้อมูล Git ของคุณ
$ สแกนความลับ> .secrets.baseline
หรือเรียกใช้จากไดเร็กทอรีอื่น:
$ ตรวจพบความลับ -C /path/to/directory scan > /path/to/directory/.secrets.baseline
การสแกนไฟล์ที่ติดตามที่ไม่ใช่ git:
$ ตรวจจับความลับสแกน test_data/ --all-files > .secrets.baseline
การดำเนินการนี้จะสแกนโค้ดเบสของคุณอีกครั้ง และ:
อัปเดต/อัปเกรดพื้นฐานของคุณให้เข้ากันได้กับเวอร์ชันล่าสุด
เพิ่มความลับใหม่ๆ ที่พบลงในพื้นฐานของคุณ
ลบความลับใดๆ ที่ไม่ได้อยู่ในโค้ดเบสของคุณอีกต่อไป
การดำเนินการนี้จะรักษาความลับที่มีป้ายกำกับที่คุณมีด้วย
$ ตรวจจับความลับสแกน --baseline .secrets.baseline
สำหรับบรรทัดฐานที่เก่ากว่าเวอร์ชัน 0.9 เพียงสร้างใหม่
การสแกนไฟล์ที่จัดฉากเท่านั้น:
$ git diff --staged --name-only -z | xargs -0 ตรวจจับความลับตะขอ --baseline .secrets.baseline
การสแกนไฟล์ที่ติดตามทั้งหมด:
$ git ls-files -z | xargs -0 ตรวจจับความลับตะขอ --baseline .secrets.baseline
$ ตรวจจับความลับสแกน --list-all-plugins ArtifactoryDetector AWSKeyDetector AzureStorageKeyDetector BasicAuthDetector CloudantDetector DiscordBotTokenDetector GitHubTokenDetector GitLabTokenDetector Base64HighEntropyString HexHighEntropyString IBMCloudIamDetector IBMCosHmacDetector IPPublicDetector JwtTokenDetector เครื่องตรวจจับคำสำคัญ MailchimpDetector NpmDetector OpenAIDetector PrivateKeyDetector PypiTokenDetector SendGridDetector SlackDetector SoftlayerDetector SquareOAuthDetector เครื่องตรวจจับลาย TelegramBotTokenDetector TwilioKeyDetector
$ ตรวจจับความลับสแกน -- ปิดการใช้งานปลั๊กอิน KeywordDetector -- ปิดการใช้งานปลั๊กอิน AWSKeyDetector
หากคุณต้องการเรียกใช้ปลั๊กอิน เฉพาะ คุณสามารถทำได้:
$ ตรวจจับความลับสแกน --list-all-plugins | grep -v 'BasicAuthDetector' | sed "s#^#--disable-plugin #g" | xargs ตรวจจับความลับสแกน test_data
นี่เป็นขั้นตอนทางเลือกในการติดป้ายกำกับผลลัพธ์ในข้อมูลพื้นฐานของคุณ สามารถใช้เพื่อจำกัดรายการตรวจสอบความลับที่จะย้ายให้แคบลง หรือเพื่อกำหนดค่าปลั๊กอินของคุณให้ดีขึ้นเพื่อปรับปรุงอัตราส่วนสัญญาณต่อเสียงรบกวน
$ การตรวจสอบความลับ .secrets.baseline
การใช้งานขั้นพื้นฐาน:
จาก detector_secrets นำเข้า SecretsCollectionfrom detector_secrets.settings นำเข้า default_settingssecrets = SecretsCollection()with default_settings():secrets.scan_file('test_data/config.ini')import jsonprint(json.dumps(secrets.json(), indent=2))
การกำหนดค่าขั้นสูงเพิ่มเติม:
จาก detector_secrets import SecretsCollectionfrom detector_secrets.settings import transient_settingssecrets = SecretsCollection()with transient_settings({# รันการสแกนด้วยปลั๊กอินเหล่านี้เท่านั้น# รูปแบบนี้เหมือนกับรูปแบบที่บันทึกไว้ในบรรทัดฐานที่สร้างขึ้น 'plugins_used': [# ตัวอย่าง ของการกำหนดค่าปลั๊กอินในตัว {'name': 'Base64HighEntropyString', 'limit': 5.0, },# ตัวอย่างการใช้ปลั๊กอินแบบกำหนดเอง{'name': 'HippoDetector','path': 'file:///Users/aaronloo/Documents/github/detect-secrets/testing/plugins.py', - ],# นอกจากนี้เรายังสามารถระบุตัวกรองเพิ่มเติมใดก็ได้ที่เราต้องการ # นี่คือตัวอย่างของการใช้ฟังก์ชัน `is_identified_by_ML_model` ภายใน # ไฟล์ในเครื่อง `./private-filters/example.py`.'filters_used': [ {'path': 'file://private-filters/example.py::is_identified_by_ML_model', - - }) เป็นการตั้งค่า:# หากเราต้องการปรับเปลี่ยนออบเจ็กต์การตั้งค่าที่สร้างขึ้นเพิ่มเติม (เช่น# ปิดการใช้งานตัวกรองเริ่มต้น) เราสามารถทำได้เช่น such.settings.disable_filters('detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign','detect_secrets .filters.heuristic.is_likely_id_string', )secrets.scan_file('test_data/config.ini')
$ pip install ตรวจจับความลับ -
ติดตั้งผ่านการชง:
$ brew ติดตั้งความลับในการตรวจจับ
detect-secrets
มาพร้อมกับเครื่องมือสามแบบที่แตกต่างกัน และมักมีความสับสนว่าควรใช้เครื่องมือใด ใช้รายการตรวจสอบที่มีประโยชน์นี้เพื่อช่วยคุณตัดสินใจ:
คุณต้องการเพิ่มความลับให้กับพื้นฐานของคุณหรือไม่? หากเป็นเช่นนั้น ให้ใช้ detect-secrets scan
คุณต้องการแจ้งเตือนความลับใหม่ที่ไม่ได้อยู่ในพื้นฐานหรือไม่? หากเป็นเช่นนั้น ให้ใช้ detect-secrets-hook
คุณกำลังวิเคราะห์พื้นฐานหรือไม่? หากเป็นเช่นนั้น ให้ใช้ detect-secrets audit
$ detect-secrets scan --help usage: detect-secrets scan [-h] [--string [STRING]] [--only-allowlisted] [--all-files] [--baseline FILENAME] [--force-use-all-plugins] [--slim] [--list-all-plugins] [-p PLUGIN] [--base64-limit [BASE64_LIMIT]] [--hex-limit [HEX_LIMIT]] [--disable-plugin DISABLE_PLUGIN] [-n | --only-verified] [--exclude-lines EXCLUDE_LINES] [--exclude-files EXCLUDE_FILES] [--exclude-secrets EXCLUDE_SECRETS] [--word-list WORD_LIST_FILE] [-f FILTER] [--disable-filter DISABLE_FILTER] [path [path ...]] Scans a repository for secrets in code. The generated output is compatible with `detect-secrets-hook --baseline`. positional arguments: path Scans the entire codebase and outputs a snapshot of currently identified secrets. optional arguments: -h, --help show this help message and exit --string [STRING] Scans an individual string, and displays configured plugins' verdict. --only-allowlisted Only scans the lines that are flagged with `allowlist secret`. This helps verify that individual exceptions are indeed non-secrets. scan options: --all-files Scan all files recursively (as compared to only scanning git tracked files). --baseline FILENAME If provided, will update existing baseline by importing settings from it. --force-use-all-plugins If a baseline is provided, detect-secrets will default to loading the plugins specified by that baseline. However, this may also mean it doesn't perform the scan with the latest plugins. If this flag is provided, it will always use the latest plugins --slim Slim baselines are created with the intention of minimizing differences between commits. However, they are not compatible with the `audit` functionality, and slim baselines will need to be remade to be audited. plugin options: Configure settings for each secret scanning ruleset. By default, all plugins are enabled unless explicitly disabled. --list-all-plugins Lists all plugins that will be used for the scan. -p PLUGIN, --plugin PLUGIN Specify path to custom secret detector plugin. --base64-limit [BASE64_LIMIT] Sets the entropy limit for high entropy strings. Value must be between 0.0 and 8.0, defaults to 4.5. --hex-limit [HEX_LIMIT] Sets the entropy limit for high entropy strings. Value must be between 0.0 and 8.0, defaults to 3.0. --disable-plugin DISABLE_PLUGIN Plugin class names to disable. e.g. Base64HighEntropyString filter options: Configure settings for filtering out secrets after they are flagged by the engine. -n, --no-verify Disables additional verification of secrets via network call. --only-verified Only flags secrets that can be verified. --exclude-lines EXCLUDE_LINES If lines match this regex, it will be ignored. --exclude-files EXCLUDE_FILES If filenames match this regex, it will be ignored. --exclude-secrets EXCLUDE_SECRETS If secrets match this regex, it will be ignored. --word-list WORD_LIST_FILE Text file with a list of words, if a secret contains a word in the list we ignore it. -f FILTER, --filter FILTER Specify path to custom filter. May be a python module path (e.g. detect_secrets.filters.common.is_invalid_file) or a local file path (e.g. file://path/to/file.py::function_name). --disable-filter DISABLE_FILTER Specify filter to disable. e.g. detect_secrets.filters.common.is_invalid_file
$ detect-secrets-hook --help usage: detect-secrets-hook [-h] [-v] [--version] [--baseline FILENAME] [--list-all-plugins] [-p PLUGIN] [--base64-limit [BASE64_LIMIT]] [--hex-limit [HEX_LIMIT]] [--disable-plugin DISABLE_PLUGIN] [-n | --only-verified] [--exclude-lines EXCLUDE_LINES] [--exclude-files EXCLUDE_FILES] [--exclude-secrets EXCLUDE_SECRETS] [--word-list WORD_LIST_FILE] [-f FILTER] [--disable-filter DISABLE_FILTER] [filenames [filenames ...]] positional arguments: filenames Filenames to check. optional arguments: -h, --help show this help message and exit -v, --verbose Verbose mode. --version Display version information. --json Print detect-secrets-hook output as JSON --baseline FILENAME Explicitly ignore secrets through a baseline generated by `detect-secrets scan` plugin options: Configure settings for each secret scanning ruleset. By default, all plugins are enabled unless explicitly disabled. --list-all-plugins Lists all plugins that will be used for the scan. -p PLUGIN, --plugin PLUGIN Specify path to custom secret detector plugin. --base64-limit [BASE64_LIMIT] Sets the entropy limit for high entropy strings. Value must be between 0.0 and 8.0, defaults to 4.5. --hex-limit [HEX_LIMIT] Sets the entropy limit for high entropy strings. Value must be between 0.0 and 8.0, defaults to 3.0. --disable-plugin DISABLE_PLUGIN Plugin class names to disable. e.g. Base64HighEntropyString filter options: Configure settings for filtering out secrets after they are flagged by the engine. -n, --no-verify Disables additional verification of secrets via network call. --only-verified Only flags secrets that can be verified. --exclude-lines EXCLUDE_LINES If lines match this regex, it will be ignored. --exclude-files EXCLUDE_FILES If filenames match this regex, it will be ignored. --exclude-secrets EXCLUDE_SECRETS If secrets match this regex, it will be ignored. -f FILTER, --filter FILTER Specify path to custom filter. May be a python module path (e.g. detect_secrets.filters.common.is_invalid_file) or a local file path (e.g. file://path/to/file.py::function_name). --disable-filter DISABLE_FILTER Specify filter to disable. e.g. detect_secrets.filters.common.is_invalid_file
เราขอแนะนำให้ตั้งค่านี้เป็นฮุคล่วงหน้า วิธีหนึ่งในการทำเช่นนี้คือการใช้กรอบการทำงานล่วงหน้า:
# .pre-commit-config.yamlrepos: - repo: https://github.com/Yelp/detect-secretsrev: v1.5.0hooks: - id: ตรวจพบความลับ: ['--baseline', '.secrets.baseline']ไม่รวม: package.lock.json
มีหลายครั้งที่เราต้องการแยกผลบวกลวงออกจากการบล็อกการคอมมิต โดยไม่ต้องสร้างพื้นฐานในการทำเช่นนั้น คุณสามารถทำได้โดยเพิ่มความคิดเห็นดังนี้:
ความลับ = "hunter2" # pragma: ความลับของรายการที่อนุญาต
หรือ
// pragma: รายการอนุญาตบรรทัดถัดไป Secretconst Secret = "hunter2";
$ การตรวจสอบความลับ --help การใช้งาน: การตรวจสอบความลับ [-h] [--diff] [--stats] [--รายงาน] [--เฉพาะจริง | --เท่านั้น-เท็จ] [--json] ชื่อไฟล์ [ชื่อไฟล์...] การตรวจสอบพื้นฐานช่วยให้นักวิเคราะห์สามารถติดป้ายกำกับผลลัพธ์ และเพิ่มประสิทธิภาพปลั๊กอินให้มีอัตราส่วนสัญญาณต่อเสียงรบกวนสูงสุดสำหรับสภาพแวดล้อมของพวกเขา ข้อโต้แย้งเกี่ยวกับตำแหน่ง: ชื่อไฟล์ ตรวจสอบไฟล์พื้นฐานที่กำหนดเพื่อแยกแยะความแตกต่าง ระหว่างผลบวกลวงและผลบวกจริง อาร์กิวเมนต์ทางเลือก: -h, --help แสดงข้อความช่วยเหลือนี้และออก --diff อนุญาตให้มีการเปรียบเทียบไฟล์พื้นฐานสองไฟล์เพื่อที่จะ แยกความแตกต่างระหว่างปลั๊กอินต่างๆ ได้อย่างมีประสิทธิภาพ การกำหนดค่า --stats แสดงผลของเซสชันการตรวจสอบเชิงโต้ตอบซึ่ง ได้รับการบันทึกลงในไฟล์พื้นฐานแล้ว --report แสดงรายงานที่ตรวจพบความลับ การรายงาน: แสดงสรุปผลการค้นพบและการตัดสินใจทั้งหมด เพื่อใช้กับโหมดรายงาน (--รายงาน) --only-real รวมเฉพาะความลับที่แท้จริงในรายงาน --only-false รวมเฉพาะผลบวกลวงในรายงาน การวิเคราะห์: วัดความสำเร็จของปลั๊กอินของคุณตามผลลัพธ์ที่มีป้ายกำกับในตัวคุณ พื้นฐาน เพื่อใช้กับโหมดสถิติ (--stats) --json Outputs จะให้ผลลัพธ์ในรูปแบบที่เครื่องอ่านได้
เครื่องมือนี้ทำงานผ่านระบบ ปลั๊กอิน และ ตัวกรอง
ปลั๊กอิน ค้นหาความลับในโค้ด
ตัวกรอง จะละเว้นผลบวกลวงเพื่อเพิ่มความแม่นยำในการสแกน
คุณสามารถปรับทั้งสองอย่างเพื่อให้เหมาะกับความต้องการด้านความแม่นยำ/การเรียกคืนของคุณได้
มีสามกลยุทธ์ที่แตกต่างกันที่เราใช้เพื่อพยายามค้นหาความลับในโค้ด:
กฎที่ใช้ Regex
ปลั๊กอินเหล่านี้เป็นปลั๊กอินประเภทที่พบบ่อยที่สุด และทำงานได้ดีกับความลับที่มีโครงสร้างดี คุณสามารถเลือกตรวจสอบความลับเหล่านี้ได้ ซึ่งจะเพิ่มความแม่นยำในการสแกน อย่างไรก็ตาม การขึ้นอยู่กับสิ่งเหล่านี้เพียงอย่างเดียวอาจส่งผลเสียต่อการเรียกคืนการสแกนของคุณ
เครื่องตรวจจับเอนโทรปี
การค้นหานี้จะค้นหาสตริงที่ "ดูเป็นความลับ" ด้วยวิธีการศึกษาสำนึกที่หลากหลาย ซึ่งเหมาะสำหรับความลับที่ไม่มีโครงสร้าง แต่อาจต้องมีการปรับแต่งเพื่อปรับความแม่นยำในการสแกน
ตัวตรวจจับคำหลัก
ซึ่งจะละเว้นค่าความลับ และค้นหาชื่อตัวแปรที่มักเกี่ยวข้องกับการกำหนดค่าลับด้วยค่าฮาร์ดโค้ด วิธีนี้เหมาะสำหรับสตริงที่ "ไม่เป็นความลับ" (เช่น รหัสผ่าน le3tc0de) แต่อาจต้องมีการปรับแต่งตัวกรองเพื่อปรับความแม่นยำในการสแกน
ต้องการค้นหาความลับที่เรายังจับไม่ได้ในปัจจุบันหรือไม่? คุณยังสามารถพัฒนาปลั๊กอินของคุณเอง (อย่างง่ายดาย) และใช้กับเอ็นจิ้นได้! สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบของปลั๊กอิน
detect-secrets
มาพร้อมกับตัวกรองในตัวหลายตัวที่อาจเหมาะกับความต้องการของคุณ
บางครั้ง คุณต้องการที่จะอนุญาตให้มีเส้นบางเส้นในการสแกนของคุณได้ทั่วโลก หากเส้นเหล่านั้นตรงกับรูปแบบเฉพาะ คุณสามารถระบุกฎ regex ได้ดังนี้:
$ ตรวจจับความลับสแกน -- ไม่รวมบรรทัด 'รหัสผ่าน = (blah | ปลอม)'
หรือคุณสามารถระบุกฎ regex หลายกฎได้เช่น:
$ ตรวจจับความลับสแกน --exclude-lines 'password = blah' --exclude-lines 'password = fake'
บางครั้ง คุณต้องการละเว้นไฟล์บางไฟล์ในการสแกนของคุณ คุณสามารถระบุรูปแบบ regex เพื่อดำเนินการดังกล่าวได้ และหากชื่อไฟล์ตรงกับรูปแบบ regex นี้ ไฟล์จะไม่ถูกสแกน:
$ ตรวจจับความลับสแกน -- ไม่รวมไฟล์ '.*.signature$'
หรือคุณสามารถระบุรูปแบบ regex หลายรูปแบบได้ เช่น:
$ ตรวจจับความลับสแกน --exclude-files '.*.signature$' --exclude-files '.*/i18n/.*'
บางครั้ง คุณต้องการละเว้นค่าลับบางอย่างในการสแกนของคุณ คุณสามารถระบุกฎ regex ได้ดังนี้:
$ ตรวจจับความลับสแกน -- ไม่รวมความลับ '(fakesecret | ${.*})'
หรือคุณสามารถระบุกฎ regex หลายกฎได้เช่น:
$ ตรวจจับความลับสแกน -- ไม่รวมความลับ 'fakesecret' -- ไม่รวมความลับ '${.*})'
บางครั้ง คุณต้องการใช้การยกเว้นกับบรรทัดใดบรรทัดหนึ่ง แทนที่จะยกเว้นโดยรวม คุณดำเนินการดังกล่าวได้โดยใช้รายการที่อนุญาตในบรรทัดดังนี้
API_KEY = 'สิ่งนี้จะปกติจะถูกตรวจพบโดยปลั๊กอิน' # pragma: ความลับของรายการที่อนุญาต
ความคิดเห็นเหล่านี้ได้รับการสนับสนุนในหลายภาษา เช่น
const GoogleCredentialPassword = "มีบางอย่างเป็นความลับที่นี่"; // pragma: ความลับของรายการที่อนุญาต
คุณยังสามารถใช้:
# pragma: รายการอนุญาตบรรทัดถัดไป secretAPI_KEY = 'WillAlsoBeIgnored'
นี่อาจเป็นวิธีที่สะดวกสำหรับคุณในการเพิกเฉยต่อความลับ โดยไม่จำเป็นต้องสร้างข้อมูลพื้นฐานใหม่ทั้งหมดอีกครั้ง หากคุณต้องการค้นหาข้อมูลลับที่อนุญาตเหล่านี้อย่างชัดเจน คุณก็ทำสิ่งต่อไปนี้ได้
$ ตรวจจับความลับสแกน -- อนุญาตเท่านั้น
ต้องการเขียนตรรกะที่กำหนดเองเพิ่มเติมเพื่อกรองผลบวกลวงออกหรือไม่ ดูวิธีดำเนินการนี้ได้ในเอกสารประกอบตัวกรองของเรา
ธง --exclude-secrets
ช่วยให้คุณสามารถระบุกฎ regex เพื่อยกเว้นค่าที่เป็นความลับ อย่างไรก็ตาม หากคุณต้องการระบุรายการคำจำนวนมากแทน คุณสามารถใช้แฟล็ก --word-list
หากต้องการใช้คุณสมบัตินี้ ต้องแน่ใจว่าได้ติดตั้งแพ็คเกจ pyahocorasick
หรือใช้:
$ pip install ตรวจจับความลับ [word_list]
จากนั้นคุณสามารถใช้มันได้ดังนี้:
$ แมว wordlist.txt ไม่ใช่ความลับที่แท้จริง $ ตัวอย่างแมว.ini รหัสผ่าน = ไม่ใช่ความลับที่แท้จริง # จะแสดงผลลัพธ์ $ ตรวจพบความลับสแกนตัวอย่าง.ini # ไม่พบผลลัพธ์ $ ตรวจพบความลับสแกน -- รายการคำ wordlist.txt
Gibberish Detector เป็นโมเดล ML ธรรมดาที่พยายามตรวจสอบว่าค่าลับนั้นเป็นค่าที่ไม่มีความหมายจริงๆ หรือไม่ โดยมีข้อสันนิษฐานว่าค่าลับ ที่แท้จริง ไม่เหมือนกับคำ
หากต้องการใช้คุณสมบัตินี้ ต้องแน่ใจว่าได้ติดตั้งแพ็คเกจ gibberish-detector
หรือใช้:
$ pip install ตรวจจับความลับ [ซึ่งพูดพล่อยๆ]
ตรวจสอบแพ็คเกจเครื่องตรวจจับคำพ้องความหมายสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการฝึกโมเดล โมเดลที่ได้รับการฝึกล่วงหน้า (เพาะโดยการประมวลผล RFC) จะถูกรวมไว้เพื่อให้ใช้งานได้ง่าย
คุณยังสามารถระบุรุ่นของคุณเองได้ดังนี้:
$ ตรวจจับความลับสแกน --gibberish-model custom.model
นี่ไม่ใช่ปลั๊กอินเริ่มต้น เนื่องจากจะเพิกเฉยต่อความลับ เช่น password
นี่ไม่ได้หมายความว่าจะเป็นวิธีแก้ปัญหาที่แน่นอนเพื่อป้องกันไม่ให้ความลับเข้าสู่โค้ดเบส มีเพียงการศึกษาสำหรับนักพัฒนาที่เหมาะสมเท่านั้นที่สามารถทำได้อย่างแท้จริง เบ็ดที่กระทำล่วงหน้านี้เพียงแต่ใช้การวิเคราะห์พฤติกรรมหลายอย่างเพื่อพยายามและป้องกันกรณีที่เห็นได้ชัดของการกระทำที่เป็นความลับ
สิ่งที่ไม่สามารถป้องกันได้:
ความลับหลายบรรทัด
รหัสผ่านเริ่มต้นที่ไม่ทริกเกอร์ KeywordDetector
(เช่น login = "hunter2"
)
"ไม่พบที่เก็บ git" พบคำเตือนแม้ว่าฉันจะอยู่ใน repo คอมไพล์ก็ตาม
ตรวจสอบเพื่อดูว่าเวอร์ชัน git
ของคุณคือ >= 1.8.5 หรือไม่ ถ้าไม่ โปรดอัปเกรดแล้วลองอีกครั้ง รายละเอียดเพิ่มเติมที่นี่
detect-secrets audit
แสดง "ไม่ใช่ไฟล์พื้นฐานที่ถูกต้อง!" หลังจากสร้างพื้นฐานแล้ว
ตรวจสอบให้แน่ใจว่าการเข้ารหัสไฟล์ของไฟล์พื้นฐานของคุณเป็น UTF-8 รายละเอียดเพิ่มเติมที่นี่