Category: PHP-Web安全

web安全本笔记-暴力破解(Brute Force)-命令攻击(Command Execution)-跨站请求伪造攻击(CSRF)-不安全的验证码( Insecure CAPTCHA)-文件内包含漏洞(File Inclusion)-SQL注入(sql Injection)-文件上传漏洞(File upload)-跨站脚本攻击(XSS)

web常见攻击七–夸站脚本攻击(XSS) 3

web常见攻击七–夸站脚本攻击(XSS)

我是在dvwa(Damn Vulnerable Web App)上学到的这些东西,我把dvwa安装在了我的免费空间上,有兴趣的可以看看。DVWA 想要用户名和密码的可以联系我:sq371426@163.com dvwa 用的验证是google提供的,详情见google CAPCTHE 跨站脚本攻击就是用户在类似留言本上发布html/js代码,当浏览此留言时,脚本就会执行。 我们来看完全没有防御的代码 对数据直接输出,如果用户发布” ,就惨烈 了。 下面代码修复了这个漏斗 用str_replace将html标签替换掉,这样就可以有效防止xss攻击了。可是用户就是要发布script呢? 我们来看下面这段代码 用htmlspecialchars($_GET[‘name’]),这样就可以将html标签当做文本输出了。

web常见攻击六——文件上传漏洞 2

web常见攻击六——文件上传漏洞

  文件上传漏洞就是对用户上传的文件类型判断不完善,导致攻击者上传非法类型的文件,从而对网站进行攻击。 以上传图片为例进行介绍,下面来看初级的程序。 这段程序没有对图片类型及大小进行任何判断,就对文件进行上传,很容易产生文件攻击。 下面这段程序对文件大小及类型进行验证 很多人都会用$uploaded_type == “image/jpeg”对图片类型进行验证,可是这样依然是不安全的。 安全的图片验证类型可以这样写$uploaded_ext == “jpg” || $uploaded_ext == “JPG” || $uploaded_ext == “jpeg” || $uploaded_ext == “JPEG”),呵呵,也不难是吧,其实有些事情就这么简单,只是我们不知道而已。

web常见攻击五--sql注入(sql Injection) 0

web常见攻击五--sql注入(sql Injection)

我是在dvwa(Damn Vulnerable Web App)上学到的这些东西,我把dvwa安装在了我的免费空间上,有兴趣的可以看看。DVWA 想要用户名和密码的可以联系我:sq371426@163.com dvwa 用的验证是google提供的,详情见google CAPCTHE SQL注入,简而言之,就是攻击者在输入字符串中注入sql语句,在设计不良的程序中忽略了检查,那么这些被注入的sql指令就被数据库服务器当做正常的sql语句运行,从而造成攻击。 下面以输入id查询用户为例,简述sql语句攻击。点击这里查看实例 来看下面这段代码 初学者都会写这样的代码,能够实现基本功能,在正常情况下没有任何问题。可是无法防止sql注入,因为没有对数据进行任何过滤处理。 下面这这段代码修复了这个漏洞 这段代码对用mysql_real_escape_string对数据进行了过滤,保证没有异常sql符号。一般情况下这样就可以了,可是前面我们说这是用id来查询用户,id肯定是数字了,我们是否要对数字本身也进行验证呢,答案是肯定的。“ 我们来看更安全的程序 不仅对对数据进行了过滤,还对id进行了是否是数字进行了验证,这样就可以有效防止sql注入了。 当然这只是一中特殊情况,还有很多各种各样的sql注入攻击形势,推荐几篇好的sql注入文章 血腥!实况转播SQL注入全过程,让你知道危害有多大。 http://www.php.net/manual/zh/security.database.sql-injection.php 广告

web常见攻击四 –不安全的验证码机制(Insecure CAPCTHE)

web常见攻击四 –不安全的验证码机制(Insecure CAPCTHE)

我是在dvwa(Damn Vulnerable Web App)上学到的这些东西,我把dvwa安装在了我的免费空间上,有兴趣的可以看看。DVWA 想要用户名和密码的可以联系我:sq371426@163.com dvwa 用的验证是google提供的,详情见google CAPCTHE 这里所谓的不安全的验证码机制是指对前台获得的验证码在后台验证不够全面引起的安全问题,呵呵,这里比较绕口是吧 下面我们来看一下不安全的代码 也许初学者都会这样的代码,但是自习看一看,这段代码存在一个致命的漏洞——虽然在第一步对验证码进行了验证,但是在第二部分却没有对验证码的有效性进行验证。 下面这段代码修复了这个漏洞 到这里这段代码算是比较安全的了,但是仔细想想还是觉得这段代码哪里不对劲,是否过于冗余了呢。 下面我们来看精简安全的代码 广告

web安全三——跨站请求伪造攻击(Cross Site Request Forgery (CSRF)) 2

web安全三——跨站请求伪造攻击(Cross Site Request Forgery (CSRF))

暴力破解(Brute Force) 命令注入攻击(Command Injection Execution) CSRF就是跨站请求伪造攻击,你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,修改你的密码,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。 这里以修改您的密码介绍CSRF。 一、先看看没有任何安全防御的代码。 这段代码直接将新密码写进数据库,没有验证用户的旧密码,也没有对http引用进行确认,这样任何别的网站都可以用你cookies对你的帐户进行CSRF攻击。 二、下面这段代码对http引用进行确认,然后再写数据库。 这段代码虽然确认了http引用,但是还是看着不爽是吧。 三、下面这段代码就比较爽了。

5

web常见攻击二——命令注入攻击(Command Injection Execution)

前面我介绍了暴力破解攻击(Brute Force), 那只是web攻击中最常见的一种,今天我介绍下命令注入攻击。   所谓的web命令攻击就是系统都用户输入的数据没有进行严格的过滤就使用,从而给黑客朋友留下了可乘之机。 对于web命令攻击我就不过多的介绍了,我给两个介绍web命令攻击的链接吧。 英文的 https://www.owasp.org/index.php/Testing_for_Command_Injection_(OWASP-DV-013) 中文的 http://www.2cto.com/Article/201208/146517.html 一 、 下面我们来看一下很危险的代码。 这段代码没有对数据进行任何过滤就直接使用,是很危险的。比如用户输入的不是正常的ip(hh.kk.lll.ii),这段代码就惨烈了。 二、下面这段代码就对数据进行了初级过滤,我们来看一下。 我们看到这段代码用str_replace函数对ip进行了过滤,就是吧非法字符替换成了空字符。可是处理不了这种情况,ee.ee.ee.ee str_replace函数介绍 三、下面我们来看安全的代码 这段代码验证了所获得ip是否是数字组成的,而且全面非法ip执行,是最安全的代码。 stripslaches函数的使用 explode函数的使用 stristr函数使用 shell_exec函数使用

7

web常见攻击一——暴力破解(Brute Force)

本人也是php新手,也许写的有错,望大神指出。 所谓的暴力破解攻击就是攻击者无限次尝试用户名和密码,试图登录网站。 如果攻击者无限次的尝试,肯定会把密码尝试出来,所以我们只能把代码写好,尽可能防止这种情况的发生。另外建议朋友们把密码设的复杂一些,这样就会给攻击者增加破解难度。 1、下面是安全性最低的代码,根本没有对用户输入做任何处理,直接操作数据库。这样是非常危险的,很容易被攻击。 2、下面中等安全的代码,可以看到笔者用mysql_real_escape_string()函数处理用户信息,这样可以有效防止用户输入非法sql语句,可是处理不了其他的非法字符(如\).mysql_real_escape_string()使用 3、下面是安全性比较高的代码,可以看到笔者先用stripslashes()函数过滤用户输入,然后再用mysql_real_escape_string()对用户输入进行sql语句过滤。stripslashes()的使用

(转)php防sql攻击—— mysql_real_escape_string 的使用 0

(转)php防sql攻击—— mysql_real_escape_string 的使用

定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 下列字符受影响: \x00 \n \r \ ‘ “ \x1a 如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。 语法 mysql_real_escape_string(string,connection) 参数 描述 string 必需。规定要转义的字符串。 connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。 说明 本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。 提示和注释 提示:可使用本函数来预防数据库攻击。 例子 例子 1 例子 2...