Php 由于SQL注入,对进入数据库驱动的web开发感到紧张
可能的重复项:Php 由于SQL注入,对进入数据库驱动的web开发感到紧张,php,mysql,sql,Php,Mysql,Sql,可能的重复项: 我真的需要有人清楚地解释如何处理黑客,以及它是否真的像听起来那么复杂。sql注入的基本方法是在查询中使用参数 所以,这是不好的,可以用来注入黑客的sql: mySqlCommand.Text = "select * from mytable where FirstName = " + tbox.Text; 这样做: mySqlCommand.Parameters.Add("@FirstName", tbox.Text) mySqlCommand.Text = "select
我真的需要有人清楚地解释如何处理黑客,以及它是否真的像听起来那么复杂。sql注入的基本方法是在查询中使用参数 所以,这是不好的,可以用来注入黑客的sql:
mySqlCommand.Text = "select * from mytable where FirstName = " + tbox.Text;
这样做:
mySqlCommand.Parameters.Add("@FirstName", tbox.Text)
mySqlCommand.Text = "select * from mytable where FirstName = @FirstName";
注意:我使用了“伪代码”。
我不知道php或mysql,但同样的原则应该适用。我相信,如果我向您指出以下线索,这个问题可以得到回答:
通常,基本形式的SQL注入只是向输入添加一个qoute或两个qoute,以便关闭SQL字段:
$user = "john"
$query = "SELECT * FROM table WHERE username='$user';"
将$query设置为
“从username='john'所在的表中选择*;
”
但是,请注意,如果我们设置$user=“”或1==1或username=''”
(注意单个qoutes)
我们得到:
此查询将始终返回true,因此会发生成功的攻击。如果我们对输入进行转义,则单个QOUTE将被转义,从而它们不会像上面那样被解释。(想象一下,这就像添加一个反斜杠来逃避通过$user变量输入的单个QOUTE。)这是一个简单的例子,更复杂的SQL语句可能造成更多的伤害,但攻击方法是相同的。给他们一周一块蛋糕(其他糖果也可以),他们会为你做任何事情。:-)投票结束。请在上面搜索一下。本主题已涉及多次:
"SELECT * FROM tab;e WHERE username='' OR 1==1 OR username='';"