我遇到了一群黑客。他们几次入侵了我客户的网站,我的客户更加生气:(我的客户丢失了他的数据库(有数百条记录),不得不输入所有:(
现在,我将进行更多介绍。
现在正在处理SQL注入问题。我在管理面板登录参数中添加了mysql_real_escape_string。所以我还应该在哪里使用mysql_real_escape_string?我的网站上只有几封电子邮件表格,我认为我不需要在此添加…
我有一个index.php作为主页。我应该为此页面做些什么,以防止通过url like进行任何sql注入攻击index.php?somesql=吗?
index.php?somesql=
请给我提意见!我非常感谢!!!:(
例如:
我有这样的代码;
public function showDetails($id) { // SQL Jobs Details $this->sql_job = "SELECT * FROM jobs WHERE id=".mysql_real_escape_string($id); $this->rst_job = mysql_query($this->sql_job); $this->row_all = mysql_fetch_assoc($this->rst_job); // SQL State $this->sql_state = "SELECT title FROM state WHERE id=" . $this->row_all[$this->tbl_jobs['f4']]; $this->rst_state = mysql_query($this->sql_state); $this->row_state = mysql_fetch_assoc($this->rst_state); ........
将mysql_real_escape_string用于$ id是否足够?不用于$ this-> row_all [$ this-> tbl_jobs [‘f4’]]
基本上,每次您在SQL查询中使用一些不安全的数据(用户输入,来自数据库,文件或外部网站的值,即,您不能 100% 确定安全的任何数据)时,都应使用mysql_real_escape_string。请注意,根据OWASP,此功能对于转义动态表名称并不安全(但这远比“基本”用户输入插入少见)。
我建议您阅读有关SQL注入的整个OWASP文章,并浏览网站的其余部分。它是有关Web应用程序安全性的重要信息来源。
IMO,防止SQL注入的首选方法是使用准备好的语句。
请记住,如果您选择使用mysql_real_escape_string()它,则仅在用引号分隔的字符串中使用时才起作用。切勿在任何未引用的值上使用它。这包括数值;而是验证用户输入实际上是数字。
mysql_real_escape_string()