一:更改文章时,不要信赖任何用户提交的数据
用户会可能通过html代码修改更改文章的id号,来修改其他文章,如果没有对上传过来的文章id检验而直接利用获得的id来更改的话,很可能会出现一个用户把另外一个用户的文章给修改了。
解决办法:
对用户提交的文章id,进行验证,看是否是该用户的文章,如果是才有修改的权限,如果没有,则返回错误。(具体可以利用session存储用户登录的id,然后通过匹配是否能找到对应的记录,如果可以,说明是本人的文章,如果不是返回错误)
以新浪博客为例:
1、新浪博客文章的blog_id是加密过的字符串: 这里是的blog_id是:6a23a4c20101fi2l
2、编辑文章,html代码显示为:
3、验证方法:
1》随便修改blog_id的值为一篇不存在的文章(添加几个字母即可),提交的时候会显示:
2》修改blog_id为别人文章的blog_id,如 644fc7230101e2yt,点提交时显示:
3》更改该blog_id为自己的另外一篇文章的blog_id号,点提交成功保存,结果另一篇文章被该篇文章覆盖了。
结论:
新浪博客修改文章时判断思路为:
判断提交的blog_id:
如果存在并且和当前用户匹配,则更新提交的blog_id对应的文章,这里面不会判断是否更改的是编辑前的那篇文章,(不过一般谁会没事改自己的文章了)
如果存在但是和当前用户的id不匹配,则提示非法修改(这里新浪用了一个友好的提示来掩盖)
如果blog_id不存在,则提示改文件不存在