齐博x1第五季《项目实战-留言板》22-安全过滤1

2022-05-21 作者:torylf 分类:教程 阅读:167

即时演示地址:http://x1.alaiyeshi.net/msgboard


到目前为止,留言板基本完成了,但是基于安全我们需要思考下面几个问题:

1,多行文本框是不过滤脚本的,如果用户提交js脚本或者html格式就乱了;

2,用户频繁发送留言怎么办;

3,想加一个验证码再发送留言;

4,如何禁止某个ip留言;

5,在默认审核的情况下,用户公开发布不适当的留言的解决方案;



代码过滤

我们留言表单有三个表单元素,邮箱地址和手机都已经前后台加入了验证,非对应格式会返回错误信息

但是我们的文本只验证了字数,没有验证内容,如果发送代码内容会出现一些问题

我们看下面提交的信息:

我们内嵌了html,并加了内联的css,文字就改变了,那么我们要加入其他css,或者加入img什么的,

就会彻底破坏掉当前留言墙的布局结构,这是很不好的。

另外如果我们加入js脚本,危害就更大了。


我们提交一个弹出框的js,我们看下:

当我们刷新到这条记录的时候,js脚本就会被执行,如果提交一些破坏性js脚本,危害可想而知。

所以我们需要在内容提交后,过滤掉content内容中的代码:

我们只需要用系统提供的filtrate函数过滤下就可以了,这个系统提供的函数,会把js和html一些危害脚本自动转义,这样就安全多了。


我们再提交带代码的内容就会被自动转义展示出来。

这里必须又得给齐博系统加个赞,封装了很多方便的函数,避免了自己重复造轮子,否则可以想象一下自己得花很多时间来给脚本转义。

用户频繁发布留言的问题

如果用户频繁的发送留言,或者利用外挂机器发布,这些都是很讨厌的。

所以我们在这里加入一个时间限制,多长时间,留言只能发布一次。

看下代码:

我们将代码放置到验证代码checkdata里,这个毕竟也算验证方法。

我们再发布留言的时候,可以设置一个cookie来记录当前时间,再次发送的时候就会判断这个cookie是否存在,

如果存在,就用当前时间减去cookie的时间,如果差值小于预定的间隔时间,那么就返回错误,如果大于间隔时间就正常发送,

并再次记录cookie,这样就起到了限定作用。

比如我们当前限定的间隔时间是10秒:


这里间隔时间是写死的,不方便调用,毕竟用户不会去修改代码。所以又要用到参数选项的时候了。

我们可以想象的到,去setting里再加个参数字段,然后把对应字段放在这里,不就非常方便设置了吗;

我们用number字段,来限定数字约束

避免参数调用太长,我们在方法开头定义一个变量来接收此参数,这样后面使用变量方便一些



我们把刚刚的10秒,替换一下即可。


到此我们为其命名为留言板1.17版本,即msgboard 1.17


来源: 神盾工作室    转载请注明出处!

本文地址:https://www.shieldsoho.com/article/162.html

 标签: 模块开发 齐博X1
{{item.nickname}} @回复
发表于{{item.create_time}}

  • {{replyitem.nickname}} {{item.create_time}}
    @{{item.nickname}}

查看更多评论