Assuming that your square might be rotated against whatever coordinates system you have in place, you can't rely on there being any repetition of X and Y values in your four points.
What you can do is calculate the distances between each of the four points. If you find the following to be true, you have a square:
There are two points, say A and C which are distance x from each other, and two other points, say B and D which are also distance x from each other.
Each point {A, B, C, D} is an equal distance from the two points which aren't x away. i.e.: If A is x away from C, then it will be z away from both B and D.
Incidentally, the distance z will have to be SQRT((x^2)/2), but you don't need to confirm this. If conditions 1 and 2 are true then you have a square. NOTE: Some people are concerned about the inefficiency of square root. I didn't say that you should do this calculation, I just said that if you did you would get a predictable result!
The bare minimum of work that you would need to do would be to pick a point, say A and calculate the distance to each of the other three points. If you can find that A is x from one point and z from two other points, then you just need to check those two other points against each other. If they are also x from each other then you have a square. i.e.:
Since AB = AD, check BD:
Just to be sure, you need to check the other sides: BC and CD.
Since AC = BD and since AB = AD = BC = CD, this is therefore a square.
Along the way, if you find more than two distinct edge distances then the figure cannot be a square, so you can stop looking.
Working Example Implementation
I have created a working example on jsfiddle (see here). In my explanation of the algorithm, I use arbitrary points A, B, C, and D. Those arbitrary points happen to be in a certain order for the sake of walking through the example. The algorithm works even if the points are in a different order, however, the example doesn't necessarily work if those points are in a different order.
Thanks to: meshuai, Blrfl, MSalters and Bart van Ingen Schenau for useful comments to improve this answer.
Best Answer
I think you're on the right track with your parametric equation.
What you have there is the vector form of the line equation.
Where R is [x0, y0, z0] and V is [a, b, c].
You just need to normalize your equations. You would do that by finding the value of R such that |R| is at a minimum, which occurs when R is perpendicular to V, or R.V = 0.
Also, since t can be scaled by any value, without changing the line, you should normalize V by dividing every coefficient by |V|