Setting humanoid walkspeed to 0 safely

Is it safe just to set humanoid walkspeed to zero by client-side and what is the best way to make humanoid unmovable?

Yes, it is completely safe to set humanoid walkspeed to zero by client-side.

But for me, there are 2 better ways to do this:

1. Disable Humanoid States:

local Humanoid = --path.to.humanoid
Humanoid:SetStateEnabled(Enum.HumanoidState.Running, false)

2. Without touching the humanoid or character.

local ContextActionService = game:GetService('ContextActionService')

local blocked = function()
	return Enum.ContextActionResult.Sink
end

ContextActionService:BindAction("FreezeMovement", blocked, false,
	Enum.PlayerActions.CharacterForward,
	Enum.PlayerActions.CharacterBackward,
	Enum.PlayerActions.CharacterLeft,
	Enum.PlayerActions.CharacterRight,
	Enum.PlayerActions.CharacterJump
)

For the safest option set network owner to the server.