美文网首页
tp5帐号登陆的几点注意

tp5帐号登陆的几点注意

作者: developerAbble | 来源:发表于2018-10-10 15:48 被阅读126次

    对于一个差不多的网站,安全性重中之重。如果利用TP5从无到有书写,会出现很多安全性问题;如果利用thinkcmf诸如此类的内容管理框架,安全性问题倒是少了,但写代码不是那么自由。

    1. ADMIN与admin都能登陆,mysql查询不能分辨大小写

    发现网站不区分用户名的大小写。输入admin和ADMIn,或者其它诸如此类,同样可以登陆。以前用的是内容管理框架,倒从来没发现这样的情况。

    网上搜索的答案,普遍两种方法,但其中一种(修改建表语句的sql), 笔者这里没试通。只有下面的方法可以:

    即:在搜索的字段 name 前加上 binary 以确保大小写敏感。

    1. sql注入

    理解什么叫sql注入很简单,网上教程很多。但是解决起来,有点问题,大海捞针的感觉。

    所以最重要的是:利用相应的测试工具或辅助软件进行检测。 再强调一遍,这是最重要的。

    • 那么如何解决呢?

    还是把sql注入当做小偷偷东西吧,防止小偷偷东西,可以从三个角度分析:

    1. 把门关的死死的,不让小偷进去
      放在程序中就是对输入的参数进行正则过滤,永远不要相信用户输入的数据。可以自定义一个数据验证层。如果想简单一点,搞一个正则验证。都可以。

    2. 把柜子锁起来

    这个是核心。截张图如下:

    其实框架本身提供的搜索查询语句几乎已经保证了sql注入。但有时写的时候,要注意点。如上图,不得已在where里面写了sql语句,赋值的时候,预绑定的写法还是不错的。其它几种写法就不在这里总结了,网上很多,这里只是另外的一个思路。

    1. 偷走了东西,但是这东西对小偷没用

    前几年还有偷手机的现象,这几年很少了。原因之一就是偷去了也没用,手机锁、微信、支付宝的各种验证,完全可以预防现有各种破解。

    对于防止sql注入也是的,要对数据库中的敏感信息进行加密或其它处理。即使别人利用sql注入将信息偷了出去,看不懂,也是枉然。

    3.两种方式输入空格

    一般而言,帐号和密码中是不允许使用空格的。这分为两部分:前端控制和后端验证。

    前端控制:onkeyup="this.value=this.value.replace(/^ +| +$/g, '')"
    这个属性挺好玩的,up向上的意思,即当松开键盘的时候,执行这个方法。不过这个属性也有缺陷,当输入两个字母,再返回,在中间输入空格,是可以的。比如这样:a b。中间的空格是输入b后再返回ab中间而输入的。

    后端控制: 便是利用PHP进行筛选。比如: strpos($name," ")

    4.禁止使用admin/123456

    近几天在公众号上连续看到几篇文章,对admin/123456大加斥责。不管是admin还是123456,不用最好。

    5.连接数据库时禁止使用root帐户

    看到大多数的网站,配置文件中都用root连接数据库。这样一旦密码被破解,整个数据库就完全暴露了。如果单独创建用户,设置权限,会安全很多。

    同样的原理在于CentOS,大多数人直接操作root,如果为每个人创建一个特定用户,分配权限组,分配权限,会安全很多。同时,个人用户也可以创建自己的个人信息。

    6.php的加密方式反对使用md5

    1. md5是可以暴力破解的
    2. md5不是用来加密密码的,是用来校验数据完整性的。它的计算速度很快,而计算速度很快,意味着暴力破解/穷举法等成为可能。

    在php中可以使用password_hash,如下截图:

    具体如何使用可以google,这里只是个引子。印像中,可以对时间进行控制,这样,就大大加深暴力破解的成本了。当然,密码长度是王道,外加上字母特殊字符的搭配。

    7.改变端口号,比如22和3306

    改变端口号也是个不错的选择。这个就看个人选择了或者特殊情况。笔者认为没那个必要,有时候统一有统一的好处。

    相关文章

      网友评论

          本文标题:tp5帐号登陆的几点注意

          本文链接:https://www.haomeiwen.com/subject/upupaftx.html