安全的预防 自我安全
常见的安全攻击手段
xss攻击
解释:用户登录后,攻击者推送含有恶意脚本的URL给用户,用户点击该URL,恶意脚本被浏览器解析,向服务器提交非用户意愿的请求,来达到攻击服务器的目的。预防手段:对某些HTML危险字符进行转义,如“>” 转义为i“>" "<"转义为”<“等。
sql注入攻击
解释:攻击者发送含有恶意SQL命令的http请求,如:http://www.a.com ?userName=Frank';drop talbe users;--
数据库中执行sql select * from users where usename="Frank';drop talbe users;--" 造成uses表被删除,来达到攻击数据库的目的。
预防手段:
通过正则匹配,过滤请求数据中可能注入的SQL文件。ru如”drop talbe“等
使用预编译手段,绑定参数是最好的防SQL注入的方法。如mybatis、hibernate等框架,都实现了SQL预编译和参数绑定,这样恶意sql被当做SQL的参数,而不是SQL命令被执行。
CSRF攻击
解释:用户登录信任的服务器,然后访问攻击者(或被攻击了)的服务器,响应消息中包含访问受信任服务器的请求,在用户不知情的情况下,执行来自攻击者的请求。
预防手段:
表单token,CSRF是一个伪造用户请求的操作,得构造用户请求参数才可以,表单token在页面表单中增加一个随机数token,每次请求都不同,请求提交后检查Token的值是否正确以确定提交者是否合法。
验证码:简单有效的手段,但是一个糟糕的体验,必要时使用,如支付交易等关键页面。
Referer check:可通过http请求头referer域中记录着请求来源验证其是否合法。但referer不一定总能得到。
ErrorCode
解释:错误回显,许多web服务器未处理的异常堆栈信息直接输出到客户端浏览器,虽然对程序调试和错误报告有好处,但给黑客造成可乘之机。这样可以故意制造非法输入,获得异常信息,从而找到系统漏洞进行攻击。
防御手段:通过配置Web服务器参数,统一跳转500页面(http响应码500标识服务器内部错误)到专门的错误页面即可。
HTML注释
解释:调试方便,开发人员会在PHP,jsp等页面使用html注释语法,这样的html注释就会显示在客户端浏览器,给黑客造成遍历。
预防手段:要review代码或自动扫描,避免HTML注释漏洞
文件上传
解释:系统有文件上传功能,如上传头像或附件等。若上传的是可执行程序,并通过该程序获得服务器端执行能力,那么攻击者几乎可以在服务器上为所欲为,并以此为跳板攻击集群等。
预防手段:
设置上传文件白名单,只允许上传可靠的文件类型,此外修改文件名、使用专门的存储手段等,保护服务器免收上传文件攻击。
路径遍历
解释:攻击者在请求URL中使用相对路径,遍历系统未开放的目录和文件。
预防手段:将javascript、css等资源文件独立服务器、独立域名,其它文件不使用静态URL访问,动态参数不包含文件路径信息。
自我安全的思考
我们作为IT从业人员,不是不要沦为码农、搬砖的。而是要做为一个有思想有高度的码农,对技术架构或者框架,要懂得深层次的原理和设计,最好能清晰地描述设计以及为什么这么设计中的why点。美国制裁华为,不正是华为在搞5G,在搞基层架构担心自己的地位受到威胁,从大的环境来说,我们有大局观,从自身而言,要有忧患意识,重复的”CRUD“和对语言、框架的应用,那也就是对应的我们社会分工的低端制造,中国互联网发展到今天,尤其以阿里、腾讯、华为等代表的优秀公司,碰到的问题在全世界也是少有的,要是没有自发的创新也就不会有持续的发展,也就永远跟在苹果、亚马逊后面跑,只会模仿永远难以超越。所以大到国家,以新基建为代表的政策和资金的转移不断发展高端制造业-人工智能、芯片等,小到个人要看到历史的走向,不断从自我出发,积极主动的有自己的思考,培养创新意识,不是不重复造轮子,是别人能造,自己也能造而且更好的轮子。
对待一个架构问题,基本上没有标准答案,在适当的场景下(团队、业务、技能的认知),也会有更好的架构,有更好的思考。没有最好的架构,没有对不对,只有美不美,更好的架构,只要符合当下和未来发展的前景的就是好架构。
架构师要把握全局,整体掌控。
架构师不写文档,就相当于程序员不写代码,要重视文档的编写,从架构设计文档,到周报、述职等。
对自己的未来不要迷茫,对当下不要期望太高,期望越高,受挫感越强。认真的工作和学习,为将来储能,做好自己的本分,不断学习、总结、积累、沉淀、创新,以积极的状态投入到生活和工作中。
评论 (2 条评论)