所在的位置: php >> php介绍 >> Web图片与sql注入防护

Web图片与sql注入防护

北京最好的荨麻疹医院 http://m.39.net/baidianfeng/a_8595950.html

随着web的发展,网站安全也成了大家最头疼的问题,例如上传图片安全,sql注入,接口请求等多种问题,对于开发网站人员来说应该注意哪些问题呢?

一、图片安全

1.一个上线网站必不可少的就是上传图片,但是作为程序员都知道,绝对不能相信任何一个客户,任何一个客户的所有数据,但我们又需要与用户进行交互,那该怎么办呢?

(1)图片后缀名限制

a.获取到文件后,我们应当先获取后缀名,如不是我们想要的文件,直接return掉

(2)图片类型判断

a.判断了文件后缀名之后也是不安全的,形如摆设,但是也做了一层限制,所以我们需要进行第二次判断,也就是文件类型判断,如image/jpeg等或者其他类型的文件

(3)文件头判断

a.熟悉文件头的小伙伴还可以对文件头进行判断,但是其实重点还是第四项

(4)图片随机名生成

a.当我们接到文件过了以上三项后就热身完毕了,接下来就是生成随机名称,可以实现时间戳啊,或者springboot中的uuid等各种后端语言的随机数,生成后连接获取到的后缀名,将文件上传至服务器,在数据库中新建图片数据表,将原本文件名作为一个字段,新文件名(另外一个字段)和文件路径(共三个字段)存于数据库中,使用的时候,调用自封函数指向文件,不让用户直接接触文件真实地址,防止文件被修改或是可执行文件

b.解释:其实文件上传最重要的就是不让用户直接接触到文件,我有很多做安全的朋友喜欢在图片中插入php代码啥的,或者直接整一个木马,所以一定要做好防护措施

二、SQL注入与防护

1.Sql注入就是指用户在输入信息的时候输入的数据库语言,大概就是ortrue#,或者真注释后面的代码,达到正确的输入等等的,

2.Sql注入防护其实不难,使用各种大型框架,如laravel,springboot等都带有sql注入的防护的,如果我们自己的框架的话,可以采取数据库二次操作的方法解决,也就是将所有数据库代码封装好,在使用的时候使用我们的代码即可,其中包括用户输入的信息强制转变成字符串,强制转类型,使用正则对数据进行校验等

三、请求阻止

1.这个可以说是项目上线最必不可少的防护之一了,防止用户多次请求和非法请求,以及ping数据,web项目发展到今天已经变成了前后端分离的状态了,这也就形成很多的接口,例如商品的请求,歌单的管理...,对于请求一定要做好防护,这里我们由浅向深的讲

(1)页面的请求,对于正常页面的刷新在短时间内不会太多,当多个设备对我们进行多次请求时就会造成我们的设备增压,所以我们在做页面的时候一定要加上自定义时间戳的加密请求,这样只能用页面进行攻击时我们就可以利用前端传递设备信息,每秒进行多次方法企图攻击我们的设备就对其进行黑名单处理,具体黑名单实现就是后端进行逻辑处理之前先进行设备的判断以及设备短时间内请求次数判断

(2)接口的请求,对于接口的请求我们可以使用用户登录后给予携带唯一id,防护方法如上页面请求黑名单,给于验证后的id后才能访问,防止直接暴露在外被攻击,但是还有肉鸡以及跨域的问题需要解决

(3)接口肉鸡,因客户设备被木马,病毒所注入,可以在后台对我们发起攻击,甚至客户都是不知道的,那我们应该怎么解决呢?

(4)肉鸡,其实肉鸡的话,我感觉没什么好的方法,一边是用户,一边是更多用户,除了增加带宽,你还能把用户给禁黑名单?只能取中和的办法,增加服务器以免一下栈溢出啥的,或者一下给你整瘫痪了,由程序运行时间,暂时性将客户给禁小黑屋,只能希望以后设备上优化请求的问题,限制长时间多次数的反复请求

四、跨域

1.对待没有我们指定白名单中的请求,浏览器会有同源策略机制,同源策略能阻止小部分的接口攻击,因为有很多跨域的解决办法,所以我们也要反跨域,一般常见做法就是在请求头加入我们给予的id,加上时间戳和一串自定义数据进行密码传送,在一段时间内请求不超时,超时后再次加密,可以防止别人携带复制请求头,

总结

网站开发安全的问题值得


转载请注明:http://www.aierlanlan.com/rzfs/3841.html