如何安全过滤用户提交的数据提交到数据库
Jun 06, 2016 pm 08:49 PM
sql注入总是无孔不入(ps:' or 1=1#),该如何安全的过滤好呢(我用的php和mysql_connect)?
回复内容:
sql注入总是无孔不入(ps:' or 1=1#),该如何安全的过滤好呢(我用的php和mysql_connect)?
可以使用 mysql_real_escape_string()
对字符串进行转义,然后再放进 SQL。
$name = mysql_real_escape_string($_POST['name']); mysql_query('SELECT * FROM `users` WHERE `name` = "'.$name.'"'); //改进版。防 SQL 注入,同时屏蔽 _ 和 % 字符 function escape($str) { $str = mysql_real_escape_string($str); $str = str_replace(['_', '%'], ['\\_', '\\%'], $str); return $str; }
这里有官方介绍:http://www.php.net/manual/zh/function.mysql-real-escape-string.php
个人建议还是使用一个WEB框架,常见的WEB框架都有完善的防注入机制。
例如:
简单、快速入门的:CodeIgniter
功能更全面的:Yii (这个官网有时会被墙)
<code>select * from users where name = @name </code>
参数化查询(Parameterized Query 或 Parameterized Statement)是访问数据库时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值。
在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有指令,也不会被数据库运行。Access、SQL Server、MySQL、SQLite等常用数据库都支持参数化查询。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법
