An automated method of checking data content implemented on a computer system comprising an input subsystem, a plurality of different content checkers (208, 210, 212, 214), and an output subsystem, the method comprising the steps of: a) receiving incoming data at the input subsystem and forwarding it to each of the multiple different content checkers (208, 210, 212, 214) for content checking; b) using each of the different content checkers to receive the incoming data from the input subsystem, check the incoming data and, provided that the incoming data has passed the check, send an indication that the incoming data has passed the check to the input subsystem, apply a cryptographic hash function to the incoming data to generate a checking hash value, and send the checking hash value and an indication that the incoming data has passed the check to the output subsystem; c) allowing the incoming data to pass from the input subsystem to the output subsystem responsive to receipt by the input subsystem of the indication from each of the different content checkers that the respective content check has been passed; d) using the output subsystem to apply the cryptographic hash function to the incoming data which has passed from the input subsystem to generate a verification hash value; e) receiving at the output subsystem the checking hash values from the multiple different content checkers and comparing the checking hash values with the verification hash value; f) making the incoming data available for further processing provided that the output subsystem at least receives the incoming data from the input subsystem, the multiple different content checkers each provide an indication to the output subsystem that the incoming data has passed the respective content check, and each of the checking hash values are the same as the verification hash value; and g) wherein the incoming data does not pass through the content checkers when passing between the input subsystem and the output subsystem. a) receiving incoming data at the input subsystem and forwarding it to each of the multiple different content checkers (208, 210, 212, 214) for content checking; b) using each of the different content checkers to receive the incoming data from the input subsystem, check the incoming data and, provided that the incoming data has passed the check, send an indication that the incoming data has passed the check to the input subsystem, apply a cryptographic hash function to the incoming data to generate a checking hash value, and send the checking hash value and an indication that the incoming data has passed the check to the output subsystem; c) allowing the incoming data to pass from the input subsystem to the output subsystem responsive to receipt by the input subsystem of the indication from each of the different content checkers that the respective content check has been passed; d) using the output subsystem to apply the cryptographic hash function to the incoming data which has passed from the input subsystem to generate a verification hash value; e) receiving at the output subsystem the checking hash values from the multiple different content checkers and comparing the checking hash values with the verification hash value; f) making the incoming data available for further processing provided that the output subsystem at least receives the incoming data from the input subsystem, the multiple different content checkers each provide an indication to the output subsystem that the incoming data has passed the respective content check, and each of the checking hash values are the same as the verification hash value; and g) wherein the incoming data does not pass through the content checkers when passing between the input subsystem and the output subsystem.