非法操作

燃烧的冰2020-03-30  6.7K+

wellcms非法操作提示,由于 wellcms 前后台引入 token 安全机制,这是wellcms的一道安全锁。

 

每个用户随机分配 token ,每次刷新生成新的 token ,且不重复,且 JS 无法获取,即使拿到也无法解密。操作提交后,只有后端程序可解密,伪造 token 会解密失败,解密 token 成功之后,验证数据有效性,是否过期。

 

比如,以后的投稿,上传等等,没有 token 无法操作,限制了软件抓包伪造上传,想上传必须有后端生成的 token。

 

你可以在conf/conf.php中进行设置,开启,默认为关闭,但是后台敏感操作不受开关限制。

// token验证,开启后内容提交和上传都需要token,没有token无法操作。
'upload_token' => 1, // 0关闭 1开启上传验证 token
'message_token' => 0, // 0关闭 1开启发布内容验证 token
'comment_token' => 0, // 0关闭 1开启评论验证 token
'login_only' => 0, // 单点登录 0关闭 1开启
'login_ip' => 0, // 验证IP 0关闭 1开启
'login_ua' => 0, // 验证UA 0关闭 1开启

 

如果开启了CDN,需要在程序中配置开启CDN 为 1,否则会提示非法操作。

'cdn_on' => 1, // 1使用CDN获取数据 0为关闭,使用CDN必须设置此项为 1

 

token 很明显的就是做什么都需要令牌,而且该令牌是一次性的,每次刷新都分配新的令牌给你,该令牌不可伪造。

生成 token 的数据保护:用户ID、IP、时间,之后使用key加密。

 

生成token加密key

第一层:每个用户的登录md5值,每个值都加入了混淆码,因此不可测;

第二层:对取出的md5值再次md5加密;

第三层:新的md5值 + 64位key再次md5加密 ,生成加解密的key;

第四层:使用生成的key 对 token 数据加密,加密后仅限程序自身可解密,除非知道前三层生成key的数据,如果能知道这些数据,说明你的服务器已经被敌人占领。

第五层:用户提交数据给后端,后端拿到 token 后做以下验证。如果提交来的数据没有 token 直接拒绝该操作。

1.token 是否真实;

2.token 是否可以解密成功;

3.token 解密成功之后加密数据是否对应当前数据;

4.token 是否过期;

5.验证通过之后执行操作。

0