2. 安全
最后更新于:2022-04-01 23:06:52
## 2. 安全
* [OWASP开发指南](http://www.owasp.org/index.php/Category%3aOWASP_Guide_Project) 几乎覆盖了网站安全所有的内容。
* 了解注入,尤其是 [SQL注入](http://en.wikipedia.org/wiki/SQL_injection),并学会如何阻止它。
* 永远不要相信用户的输入,以及其他任何请求(包括Cookies和隐藏域的值)。
* 使用盐值(salt)哈希密码,并对不同的行使用不同的盐值,防止攻击。使用哈希算法如 bcrypt 或 scrypt(更安全,但比较新)([1](http://www.tarsnap.com/scrypt.html), [2](http://it.slashdot.org/comments.pl?sid=1987632&cid=35149842))来存储密码。([如何安全的存储密码](http://codahale.com/how-to-safely-store-a-password/))。[NIST也允许使用PBKDF2来加密密码](http://security.stackexchange.com/q/7689/396)。避免直接使用 MD5 和 SHA 等算法。
* [不要企图拿出自己喜欢的认证系统](http://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely/1581919#1581919)。这是很容易出错的,并且是不可测的,甚至直到你被攻击了你才知道。
* 了解[信用卡处理规则](https://www.pcisecuritystandards.org/)。(也可查看[该问题](http://stackoverflow.com/questions/51094/payment-processors-what-do-i-need-to-know-if-i-want-to-accept-credit-cards-on-m))
* 在登录页和任何需要输入敏感数据的页面使用[SSL/HTTPS](http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt)。
* [防止 session 被劫持](http://en.wikipedia.org/wiki/Session_hijacking#Prevention)。
* 避免[跨站脚本](http://en.wikipedia.org/wiki/Cross-site_scripting)(XSS)。
* 避免[点击劫持](http://en.wikipedia.org/wiki/Clickjacking)。
* 保持系统更新到最新的补丁。
* 确保数据库连接信息的安全。
* 让自己了解最新的攻击技术和会影响你平台的漏洞。
* 阅读[谷歌浏览器安全手册](http://code.google.com/p/browsersec/wiki/Main)。
* 阅读[WEB应用黑客手册](http://amzn.com/0470170778)。
* 考虑[最小特权原则](https://en.wikipedia.org/wiki/Principle_of_least_privilege),尽量使用[非root用户](http://security.stackexchange.com/questions/47576/do-simple-linux-servers-really-need-a-non-root-user-for-security-reasons)运行服务器(以[tomcat](http://tomcat.apache.org/tomcat-8.0-doc/security-howto.html#Non-Tomcat_settings)为例)。
';