sto*_*yri 1 php sql security sanitization class
我正在组建一个网站,(我们已经在客户端使用javascript进行预验证).但是厌倦了每隔一行编写mysql_real_escape_string.我写了这个类只有两个函数,主要集中在用户输入/ sql中清理数据.我的问题是,有哪些方法可以实现更轻松的输入消毒并提高代码可读性?
<?php
class Safe {
function userinput($string){
$string = strip_tags($string);
$string = htmlspecialchars($string);
return $string;
}
function sql ($string){
$sqlstuff = Array("union", "select", "update", "delete", "outfile", "create");
$string = Safe::str($string);
$string = mysql_escape_string($string);
$string = str_ireplace($sqlstuff, "", $string);
return $string;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
对不起,这听起来很刺耳,但你的班级完全被打破了.
htmlspecialchars用于清理输入,它只对转义输出有用.您不需要编码HTML以插入数据库也不需要.仅htmlspecialchars在将输出发送到浏览器时使用htmlspecialchars在以后输出该数据时再次使用以确保HTML标记被转义而不被浏览器解释mysql_escape_string或mysql_real_escape_string,您应该使用PDO.如果您正在编写新站点,则绝对没有理由不正确启动并使用PDO.做吧.再次,抱歉这个答案的严厉语气,但废弃整个事情并使用PDO.这里几乎没有任何可挽救的东西.