php教程 php手册 细谈php中SQL注入攻击与XSS攻击

细谈php中SQL注入攻击与XSS攻击

Jun 06, 2016 pm 08:40 PM
SQL 인젝션 공격 xss 공격

通常在编程中程序员要考虑的问题不仅是代码效率与代码复用性,而且还要考虑一些安全问题

例如: SQL注入攻击
XSS攻击
代码如下:
任意执行代码
文件包含以及CSRF.
}


关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题
见代码:

代码如下:
mysql_connect("localhost","root","123456")or die("数据库连接失败!");
mysql_select_db("test1");
$user=$_post['uid'];
$pwd=$_POST['pass'];
if(mysql_query("SELECT * from where
admin
= `username`='$user' or `password`='$pwd'"){
echo "用户成功登陆..";
} eles {
echo "用户名或密码出错";
}
?>

很简单的一段代码,功能是用于检测用户名或密码是否正确,可是在一些恶意攻击者中提交一些敏感代码.后果可想而知.. post判断注入的方式有2种。
1.在form表单的文本框输入 "or‘1'=1"或者"and 1=1"
在查询数据库的语句就应该是:
SELECT admin from where login = `user`=''or‘1'=1' or `pass`=‘xxxx'
当然也不会出现什么错误,因为or在sql的语句中代表和,或的意思。当然也会提示错误。
当时我们已经发现了可以执行SQL语句之后就可以查询当前表的所有信息。例如:正确的管理员账户和密码进行登录入侵。。
修复方式1:
使用javascript脚本过滤特殊字符(不推荐,指标不治本)
如果攻击者禁用了javascript还是可以进行SQL注入攻击。。
修复方式2:
使用mysql的自带函数进行过滤。
见代码:
代码如下:
// 省略连接数据库等操作。。
$user=mysql_real_escape_string($_POST['user']);
mysql_query("select * from admin whrer `username`='$user'");
?>

既然前面说道了xss攻击,我们再来说说XSS攻击以及防范吧。。
提交表单:
代码如下:





接收文件:
代码如下:
if(empty($_POST['sub'])){
echo $_POST['test'];
}

很简单的一段代码,在这里只是模拟了下使用场景..
加入攻击者提交
<script>alert(document.cookie);</script>
在返回的页面就应该显示当前页面的cookie信息。
我们可以运用到某些留言板上(提前是没过滤的),然后当管理员审核改条信息时盗取COOKIE信息,并发送到攻击者的空间或者邮箱。。攻击者可以使用cookie修改器进行登陆入侵了。。
当然解决方案也有很多。。下面就介绍一个最常用的方式吧。
修复方案1:使用javascript进行转义
修复方案2:使用php内置函数进行转义
代码如下:
[code]
if(empty($_POST['sub'])){
$str=$_POST['test'];
htmlentities($srt);
echo $srt;
}
[html]
好了,关于SQL注入攻击和XSS攻击的案例与修复方法就讲的差不多了。
当然还有其他的解决方法:
例如:使用php框架
还有其他的一些方法。。当然了,XSS的运用范围与攻击方式很多也很广。本文只针对php的提交方式进行过滤,还有其他的需要自己去研究 ^_^~
此文出此:Aey uhost team(team.hake.cc),转载请带上版权。

y0umer
2012/6/7
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

PHP를 사용하여 XSS(교차 사이트 스크립팅) 공격으로부터 보호하는 방법 PHP를 사용하여 XSS(교차 사이트 스크립팅) 공격으로부터 보호하는 방법 Jun 29, 2023 am 10:46 AM

PHP를 사용하여 XSS(교차 사이트 스크립팅) 공격으로부터 보호하는 방법

PDO 전처리를 사용하여 SQL 주입 공격을 방지하는 방법 PDO 전처리를 사용하여 SQL 주입 공격을 방지하는 방법 Jul 28, 2023 pm 11:18 PM

PDO 전처리를 사용하여 SQL 주입 공격을 방지하는 방법

SQL 주입 공격을 방지하는 방법은 무엇입니까? SQL 주입 공격을 방지하는 방법은 무엇입니까? May 13, 2023 am 08:15 AM

SQL 주입 공격을 방지하는 방법은 무엇입니까?

XSS 취약점은 어떻게 작동하나요? XSS 취약점은 어떻게 작동하나요? Feb 19, 2024 pm 07:31 PM

XSS 취약점은 어떻게 작동하나요?

PHP 데이터 필터링: XSS 및 CSRF 공격 방지 PHP 데이터 필터링: XSS 및 CSRF 공격 방지 Jul 29, 2023 pm 03:33 PM

PHP 데이터 필터링: XSS 및 CSRF 공격 방지

PHP 데이터베이스 연결 보안: SQL 삽입 공격을 방지하는 방법 PHP 데이터베이스 연결 보안: SQL 삽입 공격을 방지하는 방법 Sep 09, 2023 am 10:41 AM

PHP 데이터베이스 연결 보안: SQL 삽입 공격을 방지하는 방법

Java 개발의 일반적인 네트워크 보안 문제 및 솔루션 Java 개발의 일반적인 네트워크 보안 문제 및 솔루션 Oct 09, 2023 pm 06:36 PM

Java 개발의 일반적인 네트워크 보안 문제 및 솔루션

Go의 XSS(교차 사이트 스크립팅) 공격 예방: 모범 사례 및 팁 Go의 XSS(교차 사이트 스크립팅) 공격 예방: 모범 사례 및 팁 Jun 17, 2023 pm 12:46 PM

Go의 XSS(교차 사이트 스크립팅) 공격 예방: 모범 사례 및 팁

See all articles