Skip to content

Commit

Permalink
Merge pull request #683 from bugsnag/v7-redaction
Browse files Browse the repository at this point in the history
V7: Redaction
  • Loading branch information
bengourley committed Dec 23, 2019
2 parents ab9478c + 06fd329 commit 93085ba
Show file tree
Hide file tree
Showing 10 changed files with 455 additions and 156 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
- Update `Event` to support multiple errors [#680](https://github.com/bugsnag/bugsnag-js/pull/680)
- Move breadcrumbs to a private property on `client._breadcrumbs` [#681](https://github.com/bugsnag/bugsnag-js/pull/681)
- Move context to a private property on `Client`, and get/set via `getContext()/setContext()` [#681](https://github.com/bugsnag/bugsnag-js/pull/681)
- Update `@bugsnag/safe-json-stringify` to replace redacted values with `[REDACTED]` [#683](https://github.com/bugsnag/bugsnag-js/pull/683)

## 6.5.0 (2019-12-16)

Expand Down
23 changes: 8 additions & 15 deletions packages/core/lib/json-payload.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,27 @@
const jsonStringify = require('@bugsnag/safe-json-stringify')
const EVENT_FILTER_PATHS = [
'events.[].app',
const EVENT_REDACTION_PATHS = [
'events.[].metaData',
'events.[].breadcrumbs',
'events.[].request',
'events.[].device'
]
const SESSION_FILTER_PATHS = [
'device',
'app',
'user'
'events.[].breadcrumbs.[].metaData',
'events.[].request'
]

module.exports.event = (event, filterKeys) => {
let payload = jsonStringify(event, null, null, { filterPaths: EVENT_FILTER_PATHS, filterKeys })
module.exports.event = (event, redactedKeys) => {
let payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })
if (payload.length > 10e5) {
event.events[0]._metadata = {
notifier:
`WARNING!
Serialized payload was ${payload.length / 10e5}MB (limit = 1MB)
metadata was removed`
}
payload = jsonStringify(event, null, null, { filterPaths: EVENT_FILTER_PATHS, filterKeys })
payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })
if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit')
}
return payload
}

module.exports.session = (event, filterKeys) => {
const payload = jsonStringify(event, null, null, { filterPaths: SESSION_FILTER_PATHS, filterKeys })
module.exports.session = (event, redactedKeys) => {
const payload = jsonStringify(event, null, null)
if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit')
return payload
}

0 comments on commit 93085ba

Please sign in to comment.