Предостережение : Это, вероятно, само собой разумеется, но вы должны долго и усердно думать об этом. С параметрами, которые вы дали, вы рискуете открыть всю свою систему для любого, кто достаточно любопытен, чтобы начать возиться. Я не уверен, насколько чувствительна природа ваших данных, но все, что нужно, это одно нарушение и злой клиент, и вы можете быть в большом количестве горячей воды.
Если вы не собираетесь просить своих клиентов проделать большую работу с их стороны, ваши варианты будут довольно ограничены.
На очень дешевом конце спектра вы можете попросить их дать ссылку на страницу на вашем сайте, где они, возможно, передадут какой-то идентификатор siteId и имя пользователя в строке запроса, и тогда вы сможете по крайней мере убедиться, что ссылающаяся URL (www.yourcustomersite.com) совпадает с сайтом. Если бы вы держали его в своей таблице.
Недостатком этого является то, что рефереры могут быть подделаны, так что это не будет очень надежным решением, но лучше, чем ничего.
Если бы вы могли заставить своих клиентов выполнять небольшую работу, вы могли бы по крайней мере предоставить уникальный маркер аутентификации для каждого пользователя со своей стороны и потребовать, чтобы они отправили вам токен вместо имени пользователя. Таким образом, вместо имени пользователя вы можете получить? SiteId = yourCustomer & authToken = DKDlas29df9aa01sk.
Опять же, это не намного лучше, но, по крайней мере, делает атаку грубой силой чуть сильнее, хотя и не намного.
Надеюсь, это поможет. Удачи!