在我和我的朋友网站上是带有登录文本框的表单。如果登录不存在,则出现错误
"Error occurred. 151SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected"
。
如果我输入无效登录+某些sql(例如"iu7' or '1=1'--"
),它不会显示任何数据,也不会显示任何错误
这种形式安全吗?是否可以输入有效的login + sql来切换登录结果中的密码?你觉得怎么样?
答案 0 :(得分:2)
在提交查询之前,您应始终使用mysql_real_escape_string($_POST['...'])
转义输入值。这样,你输入的任何字符串都应该是安全的。
我不认为SO上的人会帮助你注入其他网站,所以我现在要说的就是。
答案 1 :(得分:2)
这取决于您如何使用发布的数据构建SQL命令。如果您只是从值中构建字符串,那么您将面临SQL注入攻击的风险。
看一下这篇文章:
http://php.net/manual/en/pdo.prepared-statements.php
它解释了如何在PHP中构建预准备语句,这将防止SQL注入。