这里我说一下服务器安全知识吧,虽然我很早之前想过要搞黑客技术,但是因为种种原因我最终也没有搞黑客技术,不过我还是很关心安全领域的。
很早之前我搭建服务器只是为了测试我所学的知识,安全没有怎么关注,服务器一直被各种攻击,我当时也没怎么注意,后来我还是真正去使用服务器去搭建正式的网站了,才感到安全问题的紧迫性。
我最开始的服务器用的是phpstudy,一开始会有默认的界面,提示你配置成功了,其实这些只是一个测试界面,有很多敏感的数据和很多可以注入的漏洞,不管是iis还是tomcat这些都要第一时间把默认界面删除掉。
当我们配置mysql的时候,端口不要设置成3306的默认端口,要写一个不容易猜到的端口。密码也不要默认要尽量复杂(我有个同学,数据库直接没密码,然后有一次就被当成肉鸡了,他一个月的服务器流量就这样没了…),还要把数据库的远程连接功能关闭。
用户账户要经常关注,不必要的帐号要及时清除,有时攻击者有可能会留下一个账户,如果是日常开发维护尽量不要用超级管理员帐号,密码要尽量复杂且经常改密。
如果你是刚刚接触服务器,还是建议安装一个安全软件,好多注册表规则和系统权限都不用自己去配置,安全软件有很多,我就不做广告了,我用的软件也不多,说不出什么好的。
服务器的配置我也不是一下子配置好的,现在想起来这些先写一下,下面就是对用户访问的控制了,具体的访问控制我前面写apache配置的时候也说了很多了,总之就要写尽量严格的访问规则。其实有些比如:防止暴力破解,预防DDOS这些配置,一般的服务器安全软件都可以给你自动设置的。数据库密码不要使用超级管理员,web服务需要什么权限就分配什么权限,隐藏后台的错误信息。
光运维也不行,还要研发的事情(一般安全问题被曝光,首先骂运维…其实研发也要背锅的,不过得看是什么类型的安全问题了)
对于用户传参的限制不要只在前端,真正想攻击网站的人肯定不会再网页去填写一些代码的,要在后台加一严格的限制,上传文件的可以设置文件夹目录的执行权限。我一般都对用户传参加以严格限制,比如后台接口所需要的参数都是一些字母或者数字,那么我就用正则匹配只匹配我需要的字母或者数字就行了。这里还要了解一些常见的黑客攻击手段,比如XSS,CSRF,sql注入等。平时威胁最大的数据库注入,一般使用PDO的绑定查询就可以解决注入问题,当然自己也可以去正则限定数据,转义或者编码储存。对于用户隐私数据要有业界良心加密储存,对于密码就直接使用改进型hash加密(php内置password_hash函数),不要使用不安全的md5和sha1.
记住,永远不要相信用户输入的数据。
其实我说的只是一小部分,也是最最初级的,这些也是我之前开发+运维的时候总结的一些知识,都是琐碎东西,记得不是很全,想起来我再添加吧~