预编译sql语句和参数化sql能有效防止——sql注入攻击——

预编译和参数化处理sql原理相似:sql

    参数化处理sql 是将参数进行了字符串化处理,把参数中的单引号,井号#,等都作了转义处理,进而在执行sql语句时不会被当作sql中的定界符和指定符来执行。spa

    好比,使用直接拼接的sql时:字符串

string sql="select * from tb where username='" + username + "'"string

    若是username值为aa';truncate table admins --,那么sql语句就变为 sql = "select * from tb where username='aa';truncate table admins --'",后果很明显。编译

    而使用参数来传递username,至关于对引号等符号都加了\,或者至关于作了.tostring()操做。table

相关文章
相关标签/搜索