XSS过滤文件上传(如何对url进行xss过滤)

今日笑话 2022年07月10日

本文目录一览:

最近网上流行的XSS是什么意思

最近网上流行的XSS是小学生的恶称,骂小学生的。

一是指某些人的想法、思维方式、对事物的认知和思考能力如孩子般幼稚、单纯、天真。

二是特指某类相对于同龄的人,在游戏竞技或者社交网络中, 态度傲慢、技术水准较差、拒绝与队友沟通、独断专行、忽视团队合作、甚至喜欢恶语相向的网游玩家。

三是指对没有接触过社会或社会经验不足。

扩展资料:

1、小学生技术菜,爱骂人,玻璃心(说他一句就挂机送人头,不管说什么,比如:中路的你不要再送了,然后他就说“我就送”,接着就开始了。)小学生的心思就像星空,摸不着猜不透。

2、大喷子(网络中对喜欢肆意谩骂、地域黑、招黑、互黑等网友的一种广泛性定义。),不分青红皂白就开喷。

3、说话不经过大脑考虑,以自我为中心,可能是在家被宠惯了。

4、没有接触过社会大家庭或接触社会经验不足。比如:参加工作,你要是不让新人上,永远都是新人。这也是小学生。

如何设计出一个安全的文件上传功能

这两天我们的老朋友PDP在BlackHat 08上做了一个关于GIFAR的演讲。和往常一样,PDP的东西基本上都很猥琐,这个也是。主题是关于是如何把GIF或者 JPG文件和JAR文件捆绑在一起,然后欺骗服务器以为是GIF或JPG文件,结果却是在客户端的JVM中执行JAR的例子。

他还举了些欺骗的例子,比如在office2007中,doc文件实际上就是zip格式了,里面都是些xml,那么他把jar文件打包在zip文件里,再把后缀改成doc,来达到欺骗的目的。

在这里是客户端的问题,我想到的则是其他的问题,比如安全上传。

根据以往的经验看来,我们可能会设计如下文件上传的安全规则:

1. 文件上传的目录设置为不可执行

2. 判断文件类型

3. 单独设置文件服务器的域名

4. 改写文件名,文件路径不可预测

第一点规则是显而易见的,是为了减小执行动态语言脚本的风险。如果被成功上传了一个webshell,但是不能执行,还是能够起到深度防御的作用。

第二点,在判断文件类型的时候,我们一般要求使用白名单,而不是黑名单,因为黑名单可能会列不全,还可能会造成一些bypass的风险。

比如以前老版本的 FCKEditor就出过这种问题,只做了黑名单的控制,最后被bypass。

而apache有个特性,是解析第一个“ . ”后的文件后缀作为文件类型,比如 fvck.php.rar.rar.rar 会被apache当作 fvck.php解析。 我最近看了下php的手册,在安装文档里,针对这个问题,专门有一个指导:

15. Tell Apache to parse certain extensions as PHP. For example, lets have

Apache parse .php files as PHP. Instead of only using the Apache AddType

directive, we want to avoid potentially dangerous uploads and created

files such as exploit.php.jpg from being executed as PHP. Using this

example, you could have any extension(s) parse as PHP by simply adding

them. Well add .phtml to demonstrate.

FilesMatch .php$

SetHandler application/x-httpd-php

/FilesMatch

IIS6也有这种类似的特性,即在文件夹名字为 fvck.asp 时(fvck可替换为任意值),该文件夹下任何文件都会被当作asp来执行,

至今似乎也未见到微软有把这个特性当作bug来fix的迹象。

所以如果不熟悉这些webserver的特性,你可能会觉得漏洞来的如此神奇:我明明做了充分限制,为什么还是被“做俯卧撑”了?

在判断文件类型的时候,大多数程序都是使用的采用检查文件后缀的方法,这里主要需要注意的hacking trick是某些检查函数是否会以0字节作为结束的判断,以前动网就出过类似的漏洞,上传 fvck.jpg%00.asp即可绕过文件类型检查。

我也见过只检查文件头部的,这种也很好欺骗,构造一个合法的gif文件头部,然后将webshell贴在后面,在后缀合法的情况下,一样能够被浏览器解析:

GIF89a ?

? phpinfo(); ?

比较高级一点的是做更多的文件格式检查,比如检查图片里像素的长宽等,然后再对图片做一次压缩,这样出来的图片基本都变形了,有啥webshell也被破坏了。

而检查文件格式时候一般会用到一些网上已经封装好的类,在扫描文件格式方面还是比较有优势的。但是在检查大文件的时候效率显然是一个需要考虑的问题,很多程序员出于效率原因可能不太会愿意选择这种方式。

但是今天从PDP的这个绑定文件的猥琐方法看来,详细检查文件格式的方法还是非常有必要的,因为攻击者的目标可能不光是服务器,还是客户端,如果要对客户端有所保证,就必须要详细检查文件格式,使之落在白名单中。

第三点,单独设置文件服务器域名,也是一种针对客户端的保护。这样可能会避免许多跨域的问题。如果发生了XSS,攻击者可能还需要突破跨域的限制才能进一步扩大战果。再比如如果被上传了crossdomain.xml,可能就会导致flash的跨域问题,这些都是实实在在的风险。

第四点,改写文件名,随机文件路径。这是把风险藏起来,现在基本上尽职一点的程序员都会这么设计,这也是最大程度减小风险的非常切实有效的手段。

需要注意的是构造随机文件名或路径的算法需要足够“随机”,而不要从比如cookie之类的地方直接取一段hash出来。比较好的做法是在server上用类似random()一类的函数来生成,相信程序员们这点意识还是有的,不再赘述了。

什么是xss攻击?

一、什么是跨站脚本攻击

跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。通常将跨站脚本攻击缩写为XSS。

跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

二、跨站脚本攻击的种类

从攻击代码的工作方式可以分为三个类型:

1、持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。

2、非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。

3、DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。

三、跨站脚本攻击的手段和目的

常用的XSS攻击手段和目的有:

1、盗用cookie,获取敏感信息。

2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。

3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。

4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

四、跨站脚本攻击的防御

XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:

1、不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“”,“”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。

2、实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。

3、cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。

4、确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。

文件上传漏洞有哪些挖掘思路?

文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式、如何针对性绕过检测、哪种上传和解析的场景会产生危害等还是比较模糊。本文作一些阐述,然后补充一些除了上传webshell的其他非常规挖掘姿势,包括XSS、重定向、Dos、CSRF等等。

1、基础知识:

要深入了解文件上传,必须了解上传属性、常见文件的结构、图形处理函数等内容。

1) 报文特点:

观察文件上传报文的特点:

Header中Content-Type特征有二:

1.multipart/form-data(form表单的enctype属性,规定为二进制数据)

2.boundary字符串(作用为分隔符,以区分POST数据)

POST内容特征有五:

1.Content-Disposition:form-data

2. name:input表单名

3.filename:文件名

4.Content-Type:定义文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件;

5.boundary:Content-Type的值前面加了两个---

2) 常见校验规则

现存常用的上传校验规则无非下面几类:

1.客户端javascript校验(后缀名)

2.文件头content-type字段校验(image/gif):附带参数

4.后缀名黑/白名单校验:扩展名

5.文件内容头校验:GIF89a

6.文件内容校验:文件信息,二次渲染

7.自定义正则校验

3)一个澄清

文件上传和文件解析是两个过程,即使我们上传的是php文件,但解析为图片,访问php文件会显示“图片无法显示”;或者我们上传的是jpg文件,但里面混有shell脚本,若被解析为php文件也会执行;又或者上传处没法绕过检测,只能上传jpg文件,但在其他功能处存在文件包含等功能,仍可执行成功。

还是回到安全的本质,上传是“输入”,那文件解析就是“输出”,任何漏洞挖掘都需要结合输入+输出。

2、绕过技巧:

这里汇总一些实战中较常用的绕过技巧:

1)后缀名黑名单

以下替换后缀也可以解析为shell:

php:.phtml,.phpt,.php3,.php3p

asp:.aspx,asmx,ashx,web.config

perl:.pl,.pm,.cgi,.lib

jsp:.jspx,.jsw,.jsv,.jspf

Coldfusion:.cfm,.cfml,.cfc,.dbm

另外可以配合操作系统的文件命名规则:

.php.,.php空格,.php:1.jpg,.php::$DATA等

这些后缀的文件会被windows系统自动去掉不符合规则符号后面的内容,从而只留下.php。

2)后缀名白名单

除了结合各种服务器解析特性,较常用的是Null Byte Injection空字节注入,插入空字节值的原因是某些应用程序服务器脚本语言使用c/c++库来检查文件名和内容。在C/C ++中,一行以/00结尾或称为NullByte。因此,只要解释器在字符串的末尾看到一个空字节,就会停止读取,认为它已经到达字符串的末尾。

如,我们将要上传的Happy.jpg的名称更改为Happy.phpA.jpg,然后上传文件,在Burp中捕获请求,切换到Hex视图。在字符串视图中找到文件名。查看相应的Hex表,并将41('A')替换为00(为空字节)。结果字符串变为Happy.php(空).jpeg。由于php解释器在内部使用C语言库,它将停止读取Happy.php后的文件名,文件将保存为Happy.php。

另一种绕过白名单的方法是使用双后缀:shell.php.jpg。

常见的漏洞类型有哪些

一、SQL 注入漏洞

SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,被广泛用于非法获取网站控制权, 是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL 指令的检查,被数据库误认为是正常的SQL 指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。

通常情况下, SQL 注入的位置包括:

(1)表单提交,主要是POST 请求,也包括GET 请求;

(2)URL 参数提交,主要为GET 请求参数;

(3)Cookie 参数提交;

(4)HTTP 请求头部的一些可修改的值,比如Referer 、User_Agent 等;

(5)一些边缘的输入点,比如.mp3 文件的一些文件信息等。

SQL 注入的危害不仅体现在数据库层面上, 还有可能危及承载数据库的操作系统;如果SQL 注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:

(1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息, SQL 注入攻击能导致这些隐私信息透明于攻击者。

(2)网页篡改:通过操作数据库对特定网页进行篡改。

(3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

(4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。

(5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

(6)破坏硬盘数据,瘫痪全系统。

解决SQL 注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。通常使用的方案有:

(1 )所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL 语句中。当前几乎所有的数据库系统都提供了参数化SQL 语句执行接口,使用此接口可以非常有效的防止SQL 注入攻击。

(2 )对进入数据库的特殊字符( '"\*; 等)进行转义处理,或编码转换。

(3 )确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int 型。

(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL 注入语句无法正确执行。

(5)网站每个数据层的编码统一,建议全部使用UTF-8 编码,上下层编码不一致有可能导致一些过滤模型被绕过。

(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

(7)避免网站显示SQL 错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

(8)在网站发布之前建议使用一些专业的SQL 注入检测工具进行检测,及时修补这些SQL 注入漏洞。

二、跨站脚本漏洞

跨站脚本攻击( Cross-site scripting ,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。XSS 攻击使用到的技术主要为HTML 和Javascript ,也包括VBScript和ActionScript 等。XSS 攻击对WEB 服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。

XSS 类型包括:

(1)非持久型跨站: 即反射型跨站脚本漏洞, 是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。

(2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript 代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript 代码。

(3)DOM 跨站(DOM XSS ):是一种发生在客户端DOM (Document Object Model 文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。

XSS 的危害包括:

(1)钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript 以监控目标网站的表单输入,甚至发起基于DHTML 更高级的钓鱼攻击方式。

(2 )网站挂马:跨站时利用IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。

(3)身份盗用: Cookie 是用户对于特定网站的身份验证标志, XSS 可以盗取到用户的Cookie ,从而利用该Cookie 盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie 被窃取,将会对网站引发巨大的危害。

(4)盗取网站用户信息:当能够窃取到用户Cookie 从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。

(5)垃圾信息发送:比如在SNS 社区中,利用XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。

(6)劫持用户Web 行为:一些高级的XSS 攻击甚至可以劫持用户的Web 行为,监视用户的浏览历史,发送与接收的数据等等。

(7)XSS 蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS 攻击等。

常用的防止XSS 技术包括:

(1)与SQL 注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script 、iframe 等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP 请求中的Cookie 中的变量, HTTP 请求头部中的变量等。

(2 )不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

(3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

( 4)对输出的数据也要检查, 数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

(5)在发布应用程序之前测试所有已知的威胁。

三、弱口令漏洞

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:

(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。

(2)口令长度不小于8 个字符。

(3)口令不应该为连续的某个字符(例如: AAAAAAAA )或重复某些字符的组合(例如: tzf.tzf. )。

(4)口令应该为以下四类字符的组合,大写字母(A-Z) 、小写字母(a-z) 、数字(0-9) 和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。

(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。

(6)口令不应该为用数字或符号代替某些字母的单词。

(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。

(8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。

四、HTTP 报头追踪漏洞

HTTP/1.1 (RFC2616 )规范定义了HTTP TRACE 方法,主要是用于客户端通过向Web 服务器提交TRACE 请求来进行测试或获得诊断信息。当Web 服务器启用TRACE 时,提交的请求头会在服务器响应的内容(Body )中完整的返回,其中HTTP 头很可能包括Session Token 、Cookies 或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE 请求可以通过客户浏览器脚本发起(如XMLHttpRequest ),并可以通过DOM 接口来访问,因此很容易被攻击者利用。防御HTTP 报头追踪漏洞的方法通常禁用HTTP TRACE 方法。

五、Struts2 远程命令执行漏洞

Apache Struts 是一款建立Java web 应用程序的开放源代码架构。Apache Struts 存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java 代码。网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork 作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD 处置过诸多此类漏洞,例如:“ GPS 车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934) ;Aspcms 留言本远程代码执行漏洞( CNVD-2012-11590 )等。

修复此类漏洞,只需到Apache 官网升级Apache Struts 到最新版本

六、框架钓鱼漏洞(框架注入漏洞)

框架注入攻击是针对Internet Explorer 5 、Internet Explorer 6 、与Internet Explorer 7 攻击的一种。这种攻击导致Internet Explorer 不检查结果框架的目的网站,因而允许任意代码像Javascript 或者VBScript 跨框架存取。这种攻击也发生在代码透过多框架注入,肇因于脚本并不确认来自多框架的输入。这种其他形式的框架注入会影响所有的不确认不受信任输入的各厂商浏览器和脚本。如果应用程序不要求不同的框架互相通信,就可以通过完全删除框架名称、使用匿名框架防止框架注入。但是,因为应用程序通常都要求框架之间相互通信,因此这种方法并不可行。因此,通常使用命名框架,但在每个会话中使用不同的框架,并且使用无法预测的名称。一种可行的方法是在每个基本的框架名称后附加用户的会话令牌,如main_display 。

七、文件上传漏洞

文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过Web 访问的目录上传任意文件,包括网站后门文件( webshell ),进而远程控制网站服务器。因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell 攻击。

八、应用程序测试脚本泄露

由于测试脚本对提交的参数数据缺少充分过滤,远程攻击者可以利用洞以WEB 进程权限在系统上查看任意文件内容。防御此类漏洞通常需严格过滤提交的数据,有效检测攻击。

九、私有IP 地址泄露漏洞

IP 地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping 指令, Ping 对方在网络中的名称而获得IP;在Internet 上使用IP 版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP 包头信息,再根据这些信息了解具体的IP。针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP 信息的一些软件。不过使用这些软件有些缺点, 譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP 的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP 的网络软件(QQ 、MSN 、IE 等)都支持使用代理方式连接Internet ,特别是QQ 使用“ ezProxy ”等代理软件连接后, IP 版的QQ 都无法显示该IP 地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理, 查找到对方的真实IP 地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。

十、未加密登录请求

由于Web 配置不安全, 登陆请求把诸如用户名和密码等敏感字段未加密进行传输, 攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH 等的加密后再传输。

十一、敏感信息泄露漏洞

SQL 注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同。

如何实现php的安全最大化?怎样避免sql注入漏洞和xss跨站脚本攻击漏洞

使用php安全模式

服务器要做好管理,账号权限是否合理。

假定所有用户的输入都是“恶意”的,防止XSS攻击,譬如:对用户的输入输出做好必要的过滤

防止CSRF,表单设置隐藏域,post一个随机字符串到后台,可以有效防止跨站请求伪造。

文件上传,检查是否做好效验,要注意上传文件存储目录权限。

防御SQL注入。 

避免SQL注入漏洞

1.使用预编译语句

2.使用安全的存储过程

3.检查输入数据的数据类型

4.从数据库自身的角度考虑,应该使用最小权限原则,不可使用root或dbowner的身份连接数据库。若多个应用使用同一个数据库,也应该为数据库分配不同的账户。web应用使用的数据库账户,不应该有创建自定义函数,操作本地文件的权限。

避免XSS跨站脚本攻击

1.假定所有用户输入都是“邪恶”的

2.考虑周全的正则表达式

3.为cookie设置HttpOnly,防止cookie劫持

4.外部js不一定可靠

5.出去不必要的HTML注释

6. 针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数。

我来说两句
黑客技术 3年前 (2022-07-10) | 回复
the Apache AddType directive, we want to avoid potentially dangerous uploads and created
黑客技术 3年前 (2022-07-10) | 回复
数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL 指令的检查,被数据库误认为是正常的SQL 指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、
黑客技术 3年前 (2022-07-10) | 回复
文件命名规则:.php.,.php空格,.php:1.jpg,.php::$DATA等这些后缀的文件会被windows系统自动去掉不符合规则符号后面的内容,从而只留下.php。2)后缀名白名单除了结合各种服务器解析特性,较常用的是Null Byte Injection空字节注入,插入空字节值