后端开发保障应用安全需要至少做到哪些事情?
后端安全的几个关键词: Injection(注入), XSS(跨站), CORS(跨域)
- Injection: 写 SQL 的时候不要自己格式化 query,而应该交给标准库来做,一般
exec("select * from table where field=%s", field)
这种写法是足够安全的;exec("select * from table where fields=%s" % field)
是要命的。想想 field 的值等于1; delete from table
可怎么办! - XSS: 不信任任何用户的输入,用户的输入在渲染 Template 的时候,记得 escape 一下。不少模板库都提供了自动 escape 的功能,挑选的时候记得查看一下这种选项。
- XSS: 不信任任何用户的输入,如果真的打算渲染用户提交的 HTML 到页面上,那么 Sanitization 就是必须的。简单说来,找个库(例如 bleach) 杀杀菌,把
script
之类的标签都杀掉。 - CORS: 表单里面用上 CSRF Token。一般来说,Form 相关的库也会带上自动渲染 csrf token 的选项,挑选的时候记得查看一下。
后端应用的安全其实已经被研究的比较透了,这四种已经覆盖了大部分的攻击了。