This is ablout what you said, this does it, works on erything maybe excluding stairs. Try it yourself:
give @p cake 1 0 {CanPlaceOn:["minecraft:grass","minecraft:dirt","minecraft:stone","minecraft:cobblestone","minecraft:planks","minecraft:log","minecraft:cobblestone_wall","minecraft:bedrock","minecraft:redstone_block","minecraft:quartz_ore","minecraft:quartz","minecraft:cake","minecraft:sand","minecraft:gravel","minecraft:iron_ore","minecraft:coal_ore","minecraft:stained_hardened_clay","minecraft:leaves","minecraft:sponge","minecraft:glass","minecraft:lapis_ore","minecraft:dispenser","minecraft:sandstone","minecraft:stained_glass_pane","minecraft:stained_glass","minecraft:glass_pane","minecraft:lapis_block","minecraft:noteblock","minecraft:bed","minecraft:golden_rail","minecraft:detector_rail","minecraft:rail","minecraft:sticky_piston","minecraft:web","minecraft:piston","minecraft:wool","minecraft:wooden_stairs","minecraft:barrier","minecraft:slime","minecraft:iron_trapdoor","minecraft:prismarine","minecraft:sea_lantern","minecraft:hay_block","minecraft:carpet","minecraft:gold_block","minecraft:iron_block","minecraft:coal_block","minecraft:hardened_clay","minecraft:packed_ice","minecraft:ice","minecraft:double_stone_slab","minecraft:stone_slab","minecraft:red_sandstone","minecraft:obsidian","minecraft:mossy_cobblestone","minecraft:bookshelf","minecraft:tnt","minecraft:brick_block","minecraft:diamond_ore","minecraft:diamond_block","minecraft:farmland","minecraft:furnace","minecraft:crafting_table","minecraft:ladder","minecraft:redstone_ore","minecraft:redstone_wire","minecraft:snow","minecraft:netherrack","minecraft:glowstone","minecraft:soul_sand","minecraft:pumpkin","minecraft:mycelium","minecraft:end_stone","minecraft:emerald_ore","minecraft:emerald_block","minecraft:cocoa"]}
Expanded:
give @p cake 1 0 {CanPlaceOn:[
"minecraft:grass",
"minecraft:dirt
",
"minecraft:stone
",
"minecraft:cobblestone
",
"minecraft:planks
",
"minecraft:log
",
"minecraft:cobblestone_wall
",
"minecraft:bedrock
",
"minecraft:redstone_block
",
"minecraft:quartz_ore
",
"minecraft:quartz
",
"minecraft:cake
",
"minecraft:sand
",
"minecraft:gravel
",
"minecraft:iron_ore
",
"minecraft:coal_ore
",
"minecraft:stained_hardened_clay
",
"minecraft:leaves
",
"minecraft:sponge
",
"minecraft:glass
",
"minecraft:lapis_ore
",
"minecraft:dispenser
",
"minecraft:sandstone
",
"minecraft:stained_glass_pane
",
"minecraft:stained_glass
",
"minecraft:glass_pane
",
"minecraft:lapis_block
",
"minecraft:noteblock
",
"minecraft:bed
",
"minecraft:golden_rail
",
"minecraft:detector_rail
",
"minecraft:rail
",
"minecraft:sticky_piston
",
"minecraft:web
",
"minecraft:piston
",
"minecraft:wool
",
"minecraft:wooden_stairs
",
"minecraft:barrier
",
"minecraft:slime
",
"minecraft:iron_trapdoor
",
"minecraft:prismarine
",
"minecraft:sea_lantern
",
"minecraft:hay_block
",
"minecraft:carpet
",
"minecraft:gold_block
",
"minecraft:iron_block
",
"minecraft:coal_block
",
"minecraft:hardened_clay
",
"minecraft:packed_ice
",
"minecraft:ice
",
"minecraft:double_stone_slab
",
"minecraft:stone_slab
",
"minecraft:red_sandstone
",
"minecraft:obsidian
",
"minecraft:mossy_cobblestone
",
"minecraft:bookshelf
",
"minecraft:tnt
",
"minecraft:brick_block
",
"minecraft:diamond_ore
",
"minecraft:diamond_block
",
"minecraft:farmland
",
"minecraft:furnace
",
"minecraft:crafting_table
",
"minecraft:ladder
",
"minecraft:redstone_ore
",
"minecraft:redstone_wire
",
"minecraft:snow
",
"minecraft:netherrack
",
"minecraft:glowstone
",
"minecraft:soul_sand
",
"minecraft:pumpkin
",
"minecraft:mycelium
",
"minecraft:end_stone
",
"minecraft:emerald_ore
",
"minecraft:emerald_block
",
"minecraft:cocoa
"
]}
Best Answer
As of 1.8, in un-modded and un-textured minecraft, there is no block that fits your requirements. Probably the closest you'd come is a Snow Block, a Wool Block, a Quartz Block, or, as you said, an Iron Block. The Quartz is extremely close to pure white, closer than the iron block. However, you should look into downloading a texture or a mod that may include a purely white block if none of these are close enough.