020-29815005
预约专线时间:09:00-23:59

PythonWeb安全开发注意事项。

新闻来源:本站 日期:2021-06-18
由于以前使用django框架并没有进行规范开发,所以写了很多web漏洞,后来又学了一波web安全开发,做了个学习笔记。以下是对这些常见问题的一些总结。
  

  

  SQL注入。

  尽管目前许多ORM映射到数据库的直接应用,但这一问题并不严重。然而,当处理大数据多表联合查询时,速度不如本地sql语句快,因此使用mysqldb库,会造成一定风险。但这是有对策的。

  主机头部验证。

  缺陷检测,f12抓包,修改主机字段值,发送,查看响应中是否包含修改的主机字段值。这个解决方案是,使用django.http.HtyRequest.get_host()()()可以获得host,如果有伪造信息就直接报错,如果直接访问requy.META就不会产生这种影响。


Python


  对XSS的跨站点脚本攻击。

  在收集用户信息时,攻者经常将JavaScript、VBScript、ActiveX或Flash插入有漏洞的程序,以此来欺骗用户。他们可以盗取用户帐号,修改用户设置,盗取/污染cookie,发布虚假广告等等。大体分三个步骤:HTML注入。必须将恶意代码注入web页面;其次,这些恶意代码可以由浏览器成功执行;解决方法:首先,在提交表单或传递url参数之前,筛选所需的参数;其次,在后台筛选从数据库获得的字符串数据,并判断关键字。再次,django框架的内部机制被默认阻止。该方法将判断传入的字符串是否安全,并且不会将其作为字符串呈现。因此,写safe,要严格。

  CSRF跨站请求伪造。

  举例来说,你点了A网站的前端,但却在B网站的后端上操作,例如什么是转帐。由于A网站盗取了以前B网站的cookie,让后端误以为B网站是自己的。django自带中间件保护功能。

  其次,使用jwt来验证。每一次互动都会增加一个jwt,退出后jwt会加入related的jwt黑名单,jwt会自动过期。

  档案上传

  在网页代码中,文件传递漏洞通常由对文件上传路径的变量过滤不当所致,如果文件上传功能实现代码没有严格限制用户上传的文件后缀,以及文件类型,攻击者就可以通过网站后门文件(webshell)上传任意文件。第一步是路径求解,不向前台策略目录路径,第二步是后缀名称筛选,第三步是文件大小判断。

  超越权限操作

  绕过前端直接发包、更改用户信息等手段窥探数据库,甚至恶意攻击数据库。解决方案是,所有数据都进行用户权限检查,用户检查数据,用户数据来自jwt,并通过后端和脚本交互增加公共密钥(Ra)(虽然也不太安全,但还不错)。

  小结语

  网页就像人一样,前端保护好就像皮肤,皮肤不可靠,强大的免疫细胞才是真的强大(一切输入都不可靠,做好过滤)。