/**
 * @name Cookie security: overly broad domain
 * @description Finds cookies with an overly broad domain.
 * @kind problem
 * @problem.severity warning
 * @precision high
 * @id cs/web/broad-cookie-domain
 * @tags security
 *       external/cwe/cwe-287
 */
import csharp

from Assignment a, PropertyAccess pa
where a.getLValue() = pa
  and pa.getTarget().hasName("Domain")
  and pa.getTarget().getDeclaringType().hasQualifiedName("System.Web", "HttpCookie")
  and (a.getRValue().getValue().regexpReplaceAll("[^.]","").length() < 2 or a.getRValue().getValue().matches(".%"))
select a, "Overly broad domain for cookie."
