脚本宝典收集整理的这篇文章主要介绍了php – 这样安全吗? ADOdb准备好的声明,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用的准备好的查询是:
$db = ADONewConnection('odbc_mssql'); $dsn = "Driver={sql Server};Server=SERVNamE;Database=DBNAME;"; $ADODB_COUNTRECS = false; $db->Connect($dsn,'LOgin','PASS'); $sql = 'SELECT LOGin,etc From users WHERE login ='.$db->Param('0').' AND pass ='.$db->Param('1').''; $stmt = $db->PRepare($sql); $stmt = $db->Execute($stmt,array("$user_id","$psw"));
或者您可能会建议切换到PDO?
因此,本质上准备好的查询比输入转义更安全,例如@R_419_1681@_real_escaPE_string();,因为正如一些有智慧的人所说:
链接到完整答案:mysql_real_escape_string
那么我做了什么来测试我准备好的语句vs转义 – 我做了一个简单的提交表单并试图用@R_419_1681@_real_escape_string()来清理输入;肯定是失败的例子有“1 OR 1 = 1”,有些人建议在单引号中添加转义值,如:
它有助于防止“1 OR 1 = 1”的例子,但肯定这不是最好的做法.转义的问题在于它无法防止人们以恶意方式更改您的查询逻辑.
所以从现在开始,我将坚持ADODB准备好的陈述.就像我上面的原始问题中的那个,或者来自@L_126_18@网站的更短版本:
$dbConnection = NewADOConnection($connectionString); $sqlResult = $dbConnection->Execute( 'SELECT user_id,First_name,last_name From users WHERE username=? AND password=?',array($_POST['username'],sha1($_POST['password']) );
关于sql注入的其他非常有用的问题:
> Code safe from injections
> I do not understand SQL Injection
> SQL Injection cheat sheet
以上是脚本宝典为你收集整理的php – 这样安全吗? ADOdb准备好的声明全部内容,希望文章能够帮你解决php – 这样安全吗? ADOdb准备好的声明所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。