{"_id":"solium-plugin-security","_rev":"5-ad0e6496248c3bfcb3104394f5566371","name":"solium-plugin-security","description":"Official Solium Plugin for Security-related lint rules","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.0":{"name":"solium-plugin-security","version":"0.0.0","description":"Official Solium Plugin for Security-related lint rules","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["solium","solidity","ethereum","blockchain","dapp","lint","static-analysis","security","decentralized"],"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","_id":"solium-plugin-security@0.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"the-mad-king","email":"duaraghav8@gmail.com"},"dist":{"integrity":"sha512-+ueyKdHaBYWLvXRXMQz28J6q5sE5vUCVDNAdD/CxhWiY5IO7AKGl+m5iC22F0xJxh03RaW3Rdpw3dWqYpUZ48w==","shasum":"b9de6f907653ef7da60e1ef4ce680798e553612d","tarball":"https://registry.npmjs.org/solium-plugin-security/-/solium-plugin-security-0.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDIcwLMvPxIkvULEsoAwZK73q0wDA+N4ULBtHNLWGDjAiEAyp1/aWF2BTj7AW0me2tLhW4WP7oX7VCtOqmZsxzYUM4="}]},"maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/solium-plugin-security-0.0.0.tgz_1509171252086_0.5845470118802041"}},"0.0.1":{"name":"solium-plugin-security","version":"0.0.1","description":"Official Solium Plugin for Security-related lint rules","main":"index.js","scripts":{"test":"mocha --require should --reporter spec --recursive"},"keywords":["solium","soliumplugin","solidity","ethereum","blockchain","dapp","lint","static-analysis","smart-contract","security","decentralized"],"repository":{"type":"git","url":"git+https://github.com/duaraghav8/solium-plugin-security.git"},"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","peerDependencies":{"solium":"^1.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^4.0.1","should":"^13.1.3","solium":"^1.0.0"},"gitHead":"acbc640df0947e2541e0ee48ec60c513e87d360f","bugs":{"url":"https://github.com/duaraghav8/solium-plugin-security/issues"},"homepage":"https://github.com/duaraghav8/solium-plugin-security#readme","_id":"solium-plugin-security@0.0.1","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"the-mad-king","email":"duaraghav8@gmail.com"},"dist":{"integrity":"sha512-XyTEvi++/7LIS0AN+FIj+cs/mreHWjMLrj4Qa/kugKC4+ucOX5/8Ad1+WEbmI6R2u/aBbFckQbsjrMshy2AIdQ==","shasum":"4069013773a509f79389aaf8dac588aa765c5f2f","tarball":"https://registry.npmjs.org/solium-plugin-security/-/solium-plugin-security-0.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHyyfzCOJEc2iVXnE45q9UAopMgxYTVtwE6Tp4AS+OOYCIQCAh1OcmW5llZqLyGAATbzMK7sy8WgKDdpc2D4QSZjctA=="}]},"maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/solium-plugin-security-0.0.1.tgz_1509356373291_0.7958626912441105"}},"0.0.2":{"name":"solium-plugin-security","version":"0.0.2","description":"Official Solium Plugin for Security-related lint rules","main":"index.js","scripts":{"test":"mocha --require should --reporter spec --recursive"},"keywords":["solium","soliumplugin","solidity","ethereum","blockchain","dapp","lint","static-analysis","smart-contract","security","decentralized"],"repository":{"type":"git","url":"git+https://github.com/duaraghav8/solium-plugin-security.git"},"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","peerDependencies":{"solium":"^1.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^4.0.1","should":"^13.1.3","solium":"^1.0.0"},"gitHead":"661c2b4f1ea0aa1fea95a78abc3d2287d63f3048","bugs":{"url":"https://github.com/duaraghav8/solium-plugin-security/issues"},"homepage":"https://github.com/duaraghav8/solium-plugin-security#readme","_id":"solium-plugin-security@0.0.2","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"the-mad-king","email":"duaraghav8@gmail.com"},"dist":{"integrity":"sha512-2xjJoAWeY1Ynz1ExxtCVSABAMPrDV/AqhjE/X6jXMHJ1ubT+j9kDt5HKaHNOCa2MWoTna281HzcZlTioR1/ObA==","shasum":"2e1d690c2d260713b61bbc4194efea2306abd940","tarball":"https://registry.npmjs.org/solium-plugin-security/-/solium-plugin-security-0.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9TSY/SASbYRgUbbFC4cccGECaYn+Mr3ieBcOmTTwgvAiEAuq0SN7Hwbr3SuZvK4VI033xkJ61eYzYhqlsXhpIYA3c="}]},"maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/solium-plugin-security-0.0.2.tgz_1509942906791_0.8897576092276722"}},"0.1.0":{"name":"solium-plugin-security","version":"0.1.0","description":"Official Solium Plugin for Security-related lint rules","main":"index.js","scripts":{"test":"mocha --require should --reporter spec --recursive","lint":"eslint rules/ test/ index.js"},"keywords":["solium","soliumplugin","solidity","ethereum","blockchain","dapp","lint","static-analysis","smart-contract","security","decentralized"],"repository":{"type":"git","url":"git+https://github.com/duaraghav8/solium-plugin-security.git"},"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","peerDependencies":{"solium":"^1.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^4.0.1","should":"^13.1.3","solium":"1.1.0"},"gitHead":"0d32ca6143c52e69882d6ea444b1b64809a4028b","bugs":{"url":"https://github.com/duaraghav8/solium-plugin-security/issues"},"homepage":"https://github.com/duaraghav8/solium-plugin-security#readme","_id":"solium-plugin-security@0.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"the-mad-king","email":"duaraghav8@gmail.com"},"dist":{"integrity":"sha512-FLVkPCy3mmeg5+0NwIUoD8nmKqPMjDca7Futfg7BVaySG3rsUAg+LgoWcnpdMCFyHsjqmQHImdkhIR9TmfJ9Pw==","shasum":"30e2e481b6b3711926f09d78907b15ea1ca2f46c","tarball":"https://registry.npmjs.org/solium-plugin-security/-/solium-plugin-security-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA5Of4OsXGdIzRWJBT5jeWR47Z8wAL3GgM1jQXb8jFXwIgT1nlGAAsipt/LteQ0s5JKwxBhv3hPXX+6Yqs76+TdJk="}]},"maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/solium-plugin-security-0.1.0.tgz_1514994346651_0.33240836253389716"}},"0.1.1":{"name":"solium-plugin-security","version":"0.1.1","description":"Official Solium Plugin for Security-related lint rules","main":"index.js","scripts":{"test":"mocha --require should --reporter spec --recursive","lint":"eslint rules/ test/ index.js"},"keywords":["solium","soliumplugin","solidity","ethereum","blockchain","dapp","lint","static-analysis","smart-contract","security","decentralized"],"repository":{"type":"git","url":"git+https://github.com/duaraghav8/solium-plugin-security.git"},"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","peerDependencies":{"solium":"^1.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^4.0.1","should":"^13.1.3","solium":"1.1.0"},"gitHead":"326f7991a34edb2571b1d81d36b4ca09f62a5c11","bugs":{"url":"https://github.com/duaraghav8/solium-plugin-security/issues"},"homepage":"https://github.com/duaraghav8/solium-plugin-security#readme","_id":"solium-plugin-security@0.1.1","_npmVersion":"5.5.1","_nodeVersion":"8.0.0","_npmUser":{"name":"the-mad-king","email":"duaraghav8@gmail.com"},"dist":{"integrity":"sha512-kpLirBwIq4mhxk0Y/nn5cQ6qdJTI+U1LO3gpoNIcqNaW+sI058moXBe2UiHs+9wvF9IzYD49jcKhFTxcR9u9SQ==","shasum":"2a87bcf8f8c3abf7d198e292e4ac080284e3f3f6","tarball":"https://registry.npmjs.org/solium-plugin-security/-/solium-plugin-security-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHP8w7cy4pgsrh++N/Q1gX+6kJ6Lnrige2qcuHahDCEhAiEA8Sa5elVxJP48B/kaH12V3j1KolCtz88gft134//gpT8="}]},"maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/solium-plugin-security-0.1.1.tgz_1514998132528_0.2653031398076564"}}},"readme":"# The official Security Plugin for Solium\n\n[![Build Status](https://travis-ci.org/duaraghav8/solium-plugin-security.svg?branch=master)](https://travis-ci.org/duaraghav8/solium-plugin-security)\n\nThis Plugin provides security-focused lint rules for [Solium](https://github.com/duaraghav8/Solium).\n\nThe rules have been taken from Consensys' [Recommended Smart Contract Practices](https://consensys.github.io/smart-contract-best-practices/recommendations/) and Solium's [Rule Wishlist](https://github.com/duaraghav8/Solium/issues/44).\n\n## Installation\n**NOTE: If you're using Solium `v1.0.1` or above, this plugin comes pre-installed as a local dependency and you can skip this section.**\n\n`npm install -g solium-plugin-security`\n\n## Usage\n**NOTE: If you've installed Solium `v1.0.1` or above and created `soliumrc.json` using `solium --init`, you can skip this step since solium automatically applies the security plugin for you.**\n\nAdd `security` to your `soliumrc.json`'s `plugins` array. Your configuration file should look like:\n\n```json\n{\n    \"extends\": \"solium:all\",\n    \"plugins\": [\"security\"],\n    \"rules\": {\n        ...\n    }\n}\n```\n\n## List of rules\nBelow are the rules supplied by this plugin and the information on passing options to them and their auto-fixing capabilities.\n\nSome of them aren't always desirable and are therefore disabled by default (marked below as `OFF`). You should explicitly enable them in your `.soliumrc.json`.\n\n| Name                                 | Description                                                                                      | Options                           | Defaults                             | Fixes |\n|--------------------------------------|--------------------------------------------------------------------------------------------------|-----------------------------------|--------------------------------------|-------|\n| no-throw                             | Discourage use of 'throw' statement for error flagging                                           |                                   |                                      | YES   |\n| no-tx-origin                         | Discourage use of 'tx.origin' global variable                                                    |                                   |                                      |       |\n| enforce-explicit-visibility          | Encourage user to explicitly specify visibility of function                                      |                                   |                                      | YES   |\n| no-block-members                     | Discourage use of members 'blockhash' & 'timestamp' (and alias 'now') of 'block' global variable | List of members to warn against   | [\"blockhash\", \"timestamp\"]           |       |\n| no-call-value                        | Discourage use of .call.value()()                                                                |                                   |                                      |       |\n| no-assign-params                     | Disallow assigning to function parameters                                                        |                                   |                                      |       |\n| no-fixed                             | Disallow fixed point types                                                                       |                                   |                                      |       |\n| no-inline-assembly                   | Discourage use of inline assembly                                                                |                                   |                                      |       |\n| no-low-level-calls                   | Discourage the use of low-level functions - call(), callcode() & delegatecall()                  | List of functions to warn against | [\"call\", \"callcode\", \"delegatecall\"] |       |\n| no-modify-for-iter-var               | Discourage user to modify a for loop iteration counting variable in the loop body                |                                   |                                      |       |\n| no-send                              | Discourage the use of unsafe method 'send'                                                       |                                   |                                      |       |\n| no-sha3                              | Encourage use of 'keccak256()' over 'sha3()' function                                            |                                   |                                      | YES   |\n| no-unreachable-code                  | Disallow unreachable code                                                                        |                                   |                                      |       |\n| `OFF` else-after-elseif              | Encourage user to use else statement after else-if statement                                     |                                   |                                      |       |\n| `OFF` enforce-loop-bounds            | Encourage use of loops with fixed bounds                                                         |                                   |                                      |       |\n| `OFF` enforce-placeholder-last       | Enforce that the function placeholder is the last statement in the modifier                      |                                   |                                      |       |\n| `OFF` return-at-end                  | Discourage use of early returns in functions                                                     |                                   |                                      |       |\n| `OFF` one-break-per-loop             | Discourage use of multiple breaks in while/for/do loops                                          |                                   |                                      |       |\n| `OFF` max-statements-in-func         | Enforce upper limit on number of statements inside a function                                    | Maximum number of statements      | 25                                   |       |\n| `OFF` no-abstract-func               | Discourage use of abstract functions                                                             |                                   |                                      |       |\n| `OFF` no-bit-operations              | Disallow bitwise operations                                                                      |                                   |                                      |       |\n| `OFF` no-continue                    | Discourage use of 'continue' statement                                                           |                                   |                                      |       |\n| `OFF` no-inheritance                 | Discourage use of inheritance                                                                    | Disallow interface inheritance    | { \"no-interface\": false }            |       |\n| `OFF` no-multiple-inheritance        | Discourage use of multiple inheritance                                                           | Disallow interface inheritance    | { \"no-interface\": false }            |       |\n| `OFF` no-named-params                | Disallow named function parameters                                                               |                                   |                                      |       |\n| `OFF` no-named-returns               | Discourage use of named returns in functions                                                     |                                   |                                      |       |\n| `OFF` 256-bit-ints-only              | Disallow non-256 bit integers                                                                    |                                   |                                      |       |\n| `OFF` no-suicide-or-selfdestruct     | Disallow suicide and selfdestruct                                                                |                                   |                                      |       |\n| `OFF` no-var                         | Disallow type deduction via `var`                                                                |                                   |                                      |       |\n| `OFF` no-user-defined-modifiers      | Disallow user-defined modifiers                                                                  |                                   |                                      |       |\n| `OFF` no-void-returns                | Discourage use of void returns in functions prototypes                                           |                                   |                                      |       |\n| `OFF` no-func-overriding             | Discourage function overriding                                                                   |                                   |                                      |       |\n\nAn example `soliumrc.json` configuring and applying this plugin is:\n\n```json\n{\n    \"plugins\": [\"security\"],\n    \"rules\": {\n        \"some-other-solium-rule\": 1,\n        \"security/no-low-level-calls\": [\"error\", [\"call\", \"delegatecall\"]],\n        \"security/no-block-members\": [1, [\"timestamp\"]],\n        \"security/no-throw\": \"off\"\n    }\n}\n```\nThis tells solium to apply the 3 `security/` rules with special configuration provided and apply the remaining rules of the plugin with their default configurations. If you want to disable a plugin rule, you have to explicitly disable it inside `rules`.\n\nLint normally using `solium -d contracts/` or `solium -d contracts/ --fix` to apply fixes as well.\n\n## Developer Setup\n- `git clone <URL-of-this-repo>`\n- `cd solium-plugin-security`\n- `npm install --dev`\n- `npm link`\n- `npm link solium-plugin-security`\n- `npm test`\n\nIf you'd also like to use your develop build of this plugin with dev build of Solium, go to Solium's directory and run `npm link solium-plugin-security`. This will let Solium access your modified plugin instead of its pre-installed security module.\n\nAccess Solium's [Developer Docs](http://solium.readthedocs.io/en/latest/developer-guide.html)\n\n## Roadmap\n- [ ] Add automated tests\n- [ ] Refine rule `enforce-explicit-visibility`\n- [ ] Add more security rules\n\n### Security rules to be implemented\n- [ ] `no-multiple-send-calls`\n- [ ] `check-send-result`\n\n\n**[Access the complete Solium documentation](http://solium.readthedocs.io/en/latest/index.html)**\n","maintainers":[{"name":"the-mad-king","email":"duaraghav8@gmail.com"}],"time":{"modified":"2022-05-18T07:40:12.394Z","created":"2017-10-28T06:14:12.271Z","0.0.0":"2017-10-28T06:14:12.271Z","0.0.1":"2017-10-30T09:39:34.257Z","0.0.2":"2017-11-06T04:35:06.985Z","0.1.0":"2018-01-03T15:45:46.799Z","0.1.1":"2018-01-03T16:48:52.649Z"},"keywords":["solium","soliumplugin","solidity","ethereum","blockchain","dapp","lint","static-analysis","smart-contract","security","decentralized"],"author":{"name":"Raghav Dua","email":"duaraghav8@gmail.com"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/duaraghav8/solium-plugin-security#readme","repository":{"type":"git","url":"git+https://github.com/duaraghav8/solium-plugin-security.git"},"bugs":{"url":"https://github.com/duaraghav8/solium-plugin-security/issues"}}