如何预防PHP MYSQL注入【攻击】
补充:
对于16进制入侵还没确切防御手段,只能自己手动查有没有被入侵这样
你可以用javascript做客户端限制输入数据,治标不治本而已,填用户名的表单用username做name
function validate(){
var username = $("#username").val();
if (username.match(/[^a-zA-Z0-9]/) || username.length 3)
{
alert('Invalid username: \'' + username+'\'' );
return false;
}
}
-------------------------------------------------------
php 漏洞已经相对很少了,告诉你个简单的预防单引号的方法
写下这个function
function sql_quote( $value )
{
if( get_magic_quotes_gpc() )
{
$value = stripslashes( $value );
}
if( function_exists( "mysql_real_escape_string" ) )
{
$value = mysql_real_escape_string( $value );
}
else
{
$value = addslashes( $value );
}
return $value;
}
然后写sql的时候这么写
$username = $_POST['username'];
query = "SELECT * FROM users WHERE username='".sql_quote($username) . "'";
如果有注入攻击的话必定用到单引号
//没有用sql_quote的空咐sql语言
query = "SELECT * FROM users WHERE username='蔽亏闭' OR '1'='1'";
//用了的,单引号就被避免了
query = "SELECT * FROM users WHERE username='\' OR \'宏裂1\'=\'1'";
0条大神的评论