diff --git a/docs/Server-configuration.md b/docs/Server-configuration.md
index 73e6e03e..aeb63dcd 100644
--- a/docs/Server-configuration.md
+++ b/docs/Server-configuration.md
@@ -40,6 +40,7 @@ Impostor has an Anticheat that makes it possible to kick cheaters from games aut
| **EnableOwnershipChecks** | `true` | Enables checks that check if players are allowed to perform a certain action on themself or another player. |
| **EnableRoleChecks** | `true` | Enables checks that check if players have the correct role when performing certain role abilities like venting or murdering. |
| **EnableTargetChecks** | `true` | Enables checks that check if certain packets to everyone that should only have been sent to certain players or vice versa. This includes sending votes or network objects. |
+| **EnableIdentifierChecks** | `true` | Enables checks that verify if the friendcode and puid a host claims for a player in their PlayerInfo match the ones known for that player. |
| **ForbidProtocolExtensions** | `true` | If disabled allows players to send network packets that go beyond the network packets sent by the vanilla game. This is necessary for most mods that need all players to install it. |
| **EnablePacketSizeChecks** | `true` | Enables checks that verify if network messages exceed the maximum allowed size. |
| **PacketSizeLimit** | `1203` | The maximum allowed size (in bytes) for a network message. The official servers of Among Us requires that a Hazel packet is < 1204 bytes, excluding headers. |
diff --git a/src/Impostor.Api/CheatCategory.cs b/src/Impostor.Api/CheatCategory.cs
index f9e6f635..cecfbc4a 100644
--- a/src/Impostor.Api/CheatCategory.cs
+++ b/src/Impostor.Api/CheatCategory.cs
@@ -35,9 +35,12 @@ public enum CheatCategory
/// A packet was sent that exceeded the maximum allowed RPC size.
PacketSize,
+ /// Legacy category for unsorted anticheat checks.
+ Other,
+
/// A packet was sent with more items than possible in the game.
ItemLimits,
- /// Legacy category for unsorted anticheat checks.
- Other,
+ /// A packet contained an identifier (friendcode or puid) that does not match the one known for that player.
+ Identifiers,
}
diff --git a/src/Impostor.Api/Config/AntiCheatConfig.cs b/src/Impostor.Api/Config/AntiCheatConfig.cs
index 904ed745..160d019e 100644
--- a/src/Impostor.Api/Config/AntiCheatConfig.cs
+++ b/src/Impostor.Api/Config/AntiCheatConfig.cs
@@ -30,6 +30,8 @@ namespace Impostor.Api.Config
public bool EnableTargetChecks { get; set; } = true;
+ public bool EnableIdentifierChecks { get; set; } = true;
+
public bool ForbidProtocolExtensions { get; set; } = true;
public bool EnablePacketSizeChecks { get; set; } = true;
diff --git a/src/Impostor.Api/Net/IClient.cs b/src/Impostor.Api/Net/IClient.cs
index 0732c0cc..39d68328 100644
--- a/src/Impostor.Api/Net/IClient.cs
+++ b/src/Impostor.Api/Net/IClient.cs
@@ -60,6 +60,22 @@ namespace Impostor.Api.Net
///
IDictionary