des*_*ing 12 php mysql security sql-injection
我和一群黑客有麻烦.他们几次攻击我的客户的网站,我的客户端变得更生气:(我的客户丢失了他的数据库(有数百条记录),并且不得不输入所有:(
现在我正在进行更多的介绍;
现在正致力于SQL注入问题.我将mysql_real_escape_string添加到管理面板登录参数.那么我应该在哪里使用这个mysql_real_escape_string呢?我在网站上的电子邮件表格很少,我不认为我需要在那里添加...
我有一个index.php作为主页.我应该为这个页面做些什么来阻止任何sql注入攻击通过url 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);
........
Run Code Online (Sandbox Code Playgroud)
是否足以使用mysql_real_escape_string作为$ id.不是$ this-> row_all [$ this-> tbl_jobs ['f4']]
Woo*_*kai 13
基本上,每次在SQL查询中使用一些不安全的数据(用户输入,数据库,文件或外部网站的值,即您不能100%确定它是安全的任何数据)时,您应该使用它来转义它mysql_real_escape_string.请注意,根据OWASP,此函数对于转义动态表名称并不安全(但这远不如"基本"用户输入插入那么常见).
我建议你看一下关于SQL注入的整篇OWASP文章,还要浏览网站的其他部分.它是有关Web应用程序安全性的重要信息来源.
IMO,防止SQL注入的首选方法是使用预准备语句.
请记住,如果您选择使用mysql_real_escape_string()
它,只有在用引号分隔的字符串中使用时才有效.切勿在任何未引用的值上使用它.这包括数值; 相反,验证用户输入实际上是数字.
归档时间: |
|
查看次数: |
14734 次 |
最近记录: |