Both usages are correct, and they mean the same thing.
The only minor wrinkle is that at can be used to refer to a physical location as well as a company itself:
I work at Microsoft.
I work at the Microsoft Redmond campus.
Whereas for cannot be used this way:
I work for Microsoft.
*I work for the Microsoft Redmond campus.
The last sentence would somehow indicate that you are employed by the campus itself, which probably isn't what you mean.