Mit*_*ras 4 php sql sql-injection
在PHP中,我发现了一些防止Sql Injection的方法。绑定参数是其中之一。但是我无法找到有关绑定参数实际上如何防止Sql Injection的完整说明。我的想法是,将参数绑定不同的数据到同一个Sql语句中,绑定参数可以节省时间。如何防止Sql注入?
我认为一个简单的示例将向您解释这一点:
"select * from myTable where name = " + condition;
Run Code Online (Sandbox Code Playgroud)
假设用户输入的condition
是
'123'; delete from myTable; commit;
Run Code Online (Sandbox Code Playgroud)
那会发生什么呢?执行的查询将是
select * from myTable where name = '123'; delete from myTable; commit;
Run Code Online (Sandbox Code Playgroud)
或实际上我们有三个具有灾难性后果的查询:
select * from myTable where name = '123';
delete from myTable;
commit;
Run Code Online (Sandbox Code Playgroud)
在绑定变量的情况下
"select * from myTable where name = @prmName"
Run Code Online (Sandbox Code Playgroud)
无论用户输入什么内容,它将是一个且只有一个查询,上面的奇怪输入始终被视为字符串,而不是查询的一部分。结果将是(最有可能)一个空指针,因为是没有name
内小号myTable
像
"'123'; delete from myTable; commit;"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1258 次 |
最近记录: |