一:更改文章时,不要信赖任何用户提交的数据

      用户会可能通过html代码修改更改文章的id号,来修改其他文章,如果没有对上传过来的文章id检验而直接利用获得的id来更改的话,很可能会出现一个用户把另外一个用户的文章给修改了。

      解决办法:

      对用户提交的文章id,进行验证,看是否是该用户的文章,如果是才有修改的权限,如果没有,则返回错误。(具体可以利用session存储用户登录的id,然后通过匹配是否能找到对应的记录,如果可以,说明是本人的文章,如果不是返回错误)

以新浪博客为例:

1、新浪博客文章的blog_id是加密过的字符串: 网站编程安全之更改文章时注意事项_当前用户 这里是的blog_id是:6a23a4c20101fi2l

2、编辑文章,html代码显示为:网站编程安全之更改文章时注意事项_当前用户_02

 

3、验证方法:

    1》随便修改blog_id的值为一篇不存在的文章(添加几个字母即可),提交的时候会显示:

    网站编程安全之更改文章时注意事项_当前用户_03 

   2》修改blog_id为别人文章的blog_id,如 644fc7230101e2yt,点提交时显示:

网站编程安全之更改文章时注意事项_新浪博客_04

   3》更改该blog_id为自己的另外一篇文章的blog_id号,点提交成功保存,结果另一篇文章被该篇文章覆盖了。

 

   结论:

   新浪博客修改文章时判断思路为:

   判断提交的blog_id:

   如果存在并且和当前用户匹配,则更新提交的blog_id对应的文章,这里面不会判断是否更改的是编辑前的那篇文章,(不过一般谁会没事改自己的文章了)

   如果存在但是和当前用户的id不匹配,则提示非法修改(这里新浪用了一个友好的提示来掩盖)

   如果blog_id不存在,则提示改文件不存在