在PHP中全面阻止SQL注入式 攻击之二_MySQL
bitsCN.com
一、 注入式攻击的类型
可能存在许多不同类型的攻击动机,但是乍看上去,似乎存在更多的类型。这是非常真实的-如果恶意用户发现了一个能够执行多个查询的办法的话。本文后面,我们会对此作详细讨论。
如果你的脚本正在执行一个SELECT指令,那么,攻击者可以强迫显示一个表格中的每一行记录-通过把一个例如"1=1"这样的条件注入到WHERE子句中,如下所示(其中,注入部分以粗体显示):
SELECT * FROM wines WHERE variety = 'lagrein' OR 1=1;'
正如我们在前面所讨论的,这本身可能是很有用的信息,因为它揭示了该表格的一般结构(这是一条普通的记录所不能实现的),以及潜在地显示包含机密信息的记录。
一条更新指令潜在地具有更直接的威胁。通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子(其中,注入部分以粗体显示):
UPDATE wines SET type='red','vintage'='9999' WHERE variety = 'lagrein'
通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子(其中,注入部分以粗体显示):
UPDATE wines SET type='red','vintage'='9999 WHERE variety = 'lagrein' OR 1=1;'
最危险的指令可能是DELETE-这是不难想像的。其注入技术与我们已经看到的相同-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子(其中,注入部分以粗体显示):
DELETE FROM wines WHERE variety = 'lagrein' OR 1=1;'
二、 多个查询注入
多个查询注入将会加剧一个攻击者可能引起的潜在的损坏-通过允许多条破坏性指令包括在一个查询中。在使用MySQL数据库时,攻击者通过把一个出乎意料之外的终止符插入到查询中即可很容易实现这一点-此时一个注入的引号(单引号或双引号)标记期望变量的结尾;然后使用一个分号终止该指令。现在,一个另外的攻击指令可能被添加到现在终止的原始指令的结尾。最终的破坏性查询可能看起来如下所示:
SELECT * FROM wines WHERE variety = 'lagrein';
GRANT ALL ON *.* TO 'BadGuy@%' IDENTIFIED BY 'gotcha';'
这个注入将创建一个新的用户BadGuy并赋予其网络特权(在所有的表格上具有所有的特权);其中,还有一个"不祥"的口令被加入到这个简单的SELECT语句中。如果你遵循我们在以前文章中的建议-严格限制该过程用户的特权,那么,这应该无法工作,因为web服务器守护程序不再拥有你撤回的GRANT特权。但是从理论上讲,这样的一个攻击可能给予BadGuy自由权力来实现他对你的数据库的任何操作。
至于这样的一个多查询是否会被MySQL服务器处理,结论并不唯一。这其中的一些原因可能是由于不同版本的MySQL所致,但是大多数情况却是由于多查询存在的方式所致。MySQL的监视程序完全允许这样的一个查询。常用的MySQL GUI-phpMyAdmin,在最终查询之前会复制出以前所有的内容,并且仅仅这样做。
但是,大多数的在一个注入上下文中的多查询都是由PHP的mysql扩展负责管理的。幸好,默认情况下,它是不允许在一个查询中执行多个指令的;试图执行两个指令(例如上面所示的注入)将会简单地导致失败-不设置任何错误,并且没有生成任何输出信息。在这种情况下,尽管PHP也只是"规规矩矩"地实现其缺省行为,但是确实能够保护你免于大多数简单的注入式攻击。
PHP5中的新的mysqli扩展(参考http://php.net/mysqli),就象mysql一样,内在地也不支持多个查询,不过却提供了一个mysqli_multi_query()函数以支持你实现多查询-如果你确实想这样做的话。
然而,对于SQLite-与PHP5绑定到一起的可嵌入的SQL数据库引擎(参考http://sqlite.org/和http://php.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











소셜 미디어의 급속한 발전으로 Xiaohongshu는 가장 인기 있는 소셜 플랫폼 중 하나가 되었습니다. 사용자는 Xiaohongshu 계정을 만들어 자신의 개인 신원을 표시하고 다른 사용자와 소통하고 상호 작용할 수 있습니다. 사용자의 Xiaohongshu 번호를 찾으려면 다음의 간단한 단계를 따르세요. 1. Xiaohongshu 계정을 사용하여 사용자를 찾는 방법은 무엇입니까? 1. Xiaohongshu 앱을 열고 오른쪽 하단에 있는 "검색" 버튼을 클릭한 다음 "메모" 옵션을 선택합니다. 2. 노트 목록에서 찾고자 하는 사용자가 게시한 노트를 찾아보세요. 클릭하시면 메모 세부정보 페이지로 이동합니다. 3. 노트 상세페이지에서 해당 사용자의 아바타 아래 '팔로우' 버튼을 클릭하여 해당 사용자의 개인 홈페이지로 진입합니다. 4. 이용자 개인 홈페이지 우측 상단의 점 3개 버튼 클릭 후 '개인정보' 선택

로컬 사용자 및 그룹 유틸리티는 컴퓨터 관리에 내장되어 있으며 콘솔에서 또는 독립적으로 액세스할 수 있습니다. 그러나 일부 사용자는 Windows 11에 로컬 사용자 및 그룹이 누락되어 있음을 발견합니다. 액세스 권한이 있는 일부 사용자에게는 이 스냅인이 이 버전의 Windows 10에서 작동하지 않을 수 있다는 메시지가 표시됩니다. 이 컴퓨터의 사용자 계정을 관리하려면 제어판의 사용자 계정 도구를 사용하십시오. 이 문제는 Windows 10의 이전 버전에서 보고되었으며 일반적으로 사용자 측의 문제 또는 감독으로 인해 발생합니다. Windows 11에서 로컬 사용자 및 그룹이 누락되는 이유는 무엇입니까? Windows Home 버전을 실행 중이며 Professional 버전 이상에서는 로컬 사용자 및 그룹을 사용할 수 있습니다. 활동

Ubuntu 시스템에서는 루트 사용자가 일반적으로 비활성화되어 있습니다. 루트 사용자를 활성화하려면 passwd 명령을 사용하여 비밀번호를 설정한 다음 su- 명령을 사용하여 루트로 로그인할 수 있습니다. 루트 사용자는 무제한 시스템 관리 권한을 가진 사용자입니다. 그는 파일, 사용자 관리, 소프트웨어 설치 및 제거, 시스템 구성 변경에 액세스하고 수정할 수 있는 권한을 가지고 있습니다. 루트 사용자와 일반 사용자 사이에는 분명한 차이가 있습니다. 루트 사용자는 시스템에서 가장 높은 권한과 더 넓은 제어 권한을 갖습니다. 루트 사용자는 일반 사용자가 할 수 없는 중요한 시스템 명령을 실행하고 시스템 파일을 편집할 수 있습니다. 이 가이드에서는 Ubuntu 루트 사용자, 루트로 로그인하는 방법, 일반 사용자와 어떻게 다른지 살펴보겠습니다. 알아채다

권한으로 인해 특정 폴더에 항상 액세스할 수 있는 것은 아닙니다. 오늘 가이드에서는 Windows 11의 기존 하드 드라이브에 있는 사용자 폴더에 액세스하는 방법을 보여 드리겠습니다. 프로세스는 간단하지만 드라이브 크기에 따라 시간이 걸릴 수 있으며 때로는 몇 시간이 걸릴 수도 있으므로 인내심을 갖고 이 가이드의 지침을 자세히 따르십시오. 기존 하드 드라이브에 있는 사용자 폴더에 액세스할 수 없는 이유는 무엇입니까? 사용자 폴더는 다른 컴퓨터의 소유이므로 수정할 수 없습니다. 이 폴더에 대한 소유권 외에는 어떤 권한도 없습니다. 오래된 하드 드라이브에서 사용자 파일을 여는 방법은 무엇입니까? 1. 폴더 소유권을 가져오고 권한을 변경합니다. 이전 사용자 디렉터리를 찾아 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다. "안"으로 이동

Ubuntu 시스템에 많은 사용자가 추가되었습니다. 더 이상 사용하지 않는 사용자를 삭제하고 싶습니다. 아래의 자세한 튜토리얼을 살펴보겠습니다. 1. 터미널 명령줄을 열고 userdel 명령을 사용하여 지정된 사용자를 삭제합니다. 2. 삭제 시 반드시 일반 사용자 디렉터리에 있어야 합니다. 아래 그림과 같이 이 권한이 없습니다. 3. 삭제 명령을 실행한 후 실제로 삭제되었는지 어떻게 판단할 수 있나요? 다음으로 아래 그림과 같이 cat 명령을 사용하여 passwd 파일을 엽니다. 4. 삭제된 사용자 정보가 더 이상 passwd 파일에 없는 것을 볼 수 있으며 이는 아래 그림과 같이 사용자가 삭제되었음을 증명합니다. 5. 그런 다음 홈 파일을 입력합니다.

sudo(수퍼유저 실행)는 일반 사용자가 루트 권한으로 특정 명령을 실행할 수 있도록 하는 Linux 및 Unix 시스템의 핵심 명령입니다. sudo의 기능은 주로 다음 측면에 반영됩니다. 권한 제어 제공: sudo는 사용자에게 일시적으로 수퍼유저 권한을 얻을 수 있는 권한을 부여하여 시스템 리소스와 민감한 작업을 엄격하게 제어합니다. 일반 사용자는 필요할 때만 sudo를 통해 임시 권한을 얻을 수 있으며, 항상 슈퍼유저로 로그인할 필요는 없습니다. 향상된 보안: sudo를 사용하면 일상적인 작업 중에 루트 계정을 사용하지 않아도 됩니다. 모든 작업에 루트 계정을 사용하면 올바르지 않거나 부주의한 작업에는 전체 권한이 부여되므로 예기치 않은 시스템 손상이 발생할 수 있습니다. 그리고

Microsoft는 Windows 503145511H22 이상에 대한 선택적 업데이트로 KB2를 대중에게 출시하기 시작했습니다. 이는 지원되는 영역의 Windows Copilot, 시작 메뉴 항목에 대한 미리 보기 지원, 작업 표시줄 그룹 해제 등을 포함하여 Windows 11 Moment 4 기능을 기본적으로 활성화하는 첫 번째 업데이트입니다. 또한 메모리 누수를 일으키는 잠재적인 성능 문제를 포함하여 여러 Windows 11 버그를 수정합니다. 하지만 아이러니하게도 2023년 9월의 선택적 업데이트는 업데이트를 설치하려는 사용자에게, 심지어 이미 설치한 사용자에게도 재앙이 될 것입니다. 많은 사용자가 이 Wi-Fi를 설치하지 않을 것입니다.

Microsoft는 새로운 그림판 응용 프로그램을 테스트하고 경험하기 위해 Canary 및 Dev 채널의 WindowsInsider 프로젝트 멤버를 초대합니다. 최신 버전 번호는 11.2306.30.0입니다. 이번 버전 업데이트에서 가장 주목할 만한 새로운 기능은 원클릭 컷아웃 기능입니다. 사용자는 한 번만 클릭하면 자동으로 배경이 제거되고 사진의 본문이 강조 표시되므로 사용자가 후속 작업을 더 쉽게 수행할 수 있습니다. 전체 단계는 매우 간단합니다. 사용자는 새 레이아웃 응용 프로그램에서 그림을 가져온 다음 도구 모음에서 "배경 제거" 버튼을 클릭하여 그림의 배경을 삭제할 수도 있습니다. 배경.
