php跨站脚本攻击
Ⅰ ecshop article_cat.php文件 跨站脚本攻击漏洞 怎么修复
把article_cat.php文件中的
if(isset($_REQUEST['keywords']))
{
$keywords=addslashes(htmlspecialchars(urldecode(trim($_REQUEST['keywords']))));
$pager['search']['keywords']=$keywords;
$search_url=substr(strrchr($_POST['cur_url'],'/'),1);
改为
if(isset($_REQUEST['keywords']))
{
$keywords=addslashes(htmlspecialchars(urldecode(trim($_REQUEST['keywords']))));
$keywords=strFilter($keywords);
$pager['search']['keywords']=$keywords;//AddECShop.Vc
$search_url=substr(strrchr($_POST['cur_url'],'/'),1);
$search_url=strFilter($search_url);//AddECShop.Vc
Ⅱ 看看我这个PHP代码怎么防止跨站脚本攻击(XSS)
很遗憾,你这代码乱得很,而且看起来是后端处理代码,并不是xss关键处理代码,xss一般在入库前进行转义
Ⅲ 请问如何解决跨站问题
最近脚本攻击好象是很流行的,不过早在很久前就有这个了!脚本攻击严格的说应该是一件艺术而不是漏洞!首先我们先要知道什么是脚本,脚本就是运行在网页服务器上的文本程序,例如:ASP、PHP、CGI、JSP、ISAP等等,脚本的攻击就是利用这些文件的设置和编写时的错误或者疏忽不当,攻击者就可以利用这些来达到自己攻击目的,如果一个服务器存在这些漏洞,那么它的沦陷也是时间的问题!
这些文本文件一般都是要结合数据库来使用的,这些数据库有ACCESS、MSsql、MYSQL、Oracle等!脚本攻击就是针对这些数据库来配合脚本对一些变量的过滤不严的问题来达到得到用户密码等敏感信息,修改数据库等目的!下面我就针对这些来分别举例说明!
一、跨站脚本的攻击
脚本的跨站(CSS/XSS)就是利用程序对用户提交的变量不严,大多数是利用多媒体标签,前段时间比较流行的flash跨站就是利用的这个,比如我在[FLASH=450,350][/FLASH]之间插入一个我自己作好的一个swf文件,swf文件里我们用geturl里加上javascript:window.open('http://qfaq.yeah.net'就可以让他打开清风安全网的网站,如果这里是一个木马网页,呵呵,,,你就等着中木马吧!还有就是窃取用户的cookie,例如我们利用也就是图片的跨站,在这个里面插入
这段地址即可得到!如果将javascript过滤掉后怎么办?
好,我们在看看下面这段代码:
[upload=swf]uploadImages/200310812145390577.swf?">[/upload]
怎么样,还是能将你的信息得到的,而且还不会弹出对话框!
另外在joekoe论坛程序里还有一个这样的问题,比如你发个帖子里有[DIR][/DIR]就会弹出一个播放器的安装程序,呵呵,如果是一个黑心的站长利用这个来放马,那后果就不用说了吧!
解决办法:现在还没有好的方法解决这个问题,你要做的就是将多媒体的标签删掉!
另附ASP和PHP的跨站代码
php如下
$info = getenv("QUERY_STRING";
if ($info) {
$fp = fopen("test.txt","a";
fwrite($fp,$info."n";
fclose($fp);
}
?>
asp如下
二、sql injection
是现在最热门的,也是本文要重点说的!
1、ASP+ACCESS数据库类型的SQL注射
现在的大多数网站是采用的这个组合,但是如果在ASP程序中没有对用户提交的变量充分过滤的话就可能导致管理员密码被猜到,整个网站的信息就会暴漏无移~!
在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号!比如比较经典的金梅系统漏洞,在movie.aps中有怎么一段代码:
articleid=request("id"
set rs=server.createobject("adodb.recordset"
sql="update learning set hits=hits+1 where articleID="&articleid
--------------------------------------------------------------------------------
2 [转帖]脚本安全和利用
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1
articleid未经任何检查便提交了,所以我们就可以自己构造一些SQL语句来提交上去!具体的利用过程请看拙作《SQL注入完整篇》和《SQL注入的补充》的动画教程,这里我就不在重复的说了!
2、ASP+MYSQL数据库类型的利用
MYSQL数据库简单使用和强大的功能一直以来都是网管们的最爱!但是如果是ASP中没有对变量过滤的话,我们就可以来直接的到他的系统管理员权限!
比如动网论坛、BBSXP论坛的SQL版有好几个文件都没有对ID过滤,所以我们只要找到他的存在问题的页面就可以了,
看这段代码:rs.open "select * from news where newsid=" & cstr(request("newsid"),conn,1,1
比如我们提交:
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了吗?我们已经在系统中田加了一个xuehan 密码是ilovexuehan的管理员帐号,以下的事情你就自己来做吧,呵呵,,,不用我来教了吧!!!
如果过滤了分号和单引号怎么办?呵呵,我们只要将我们的命令形式转换一下,比如我们转换成十六进制或者别的形式就可以继续注入了,还有就是他如果过滤了xp_cmdshell 我们也可以解决,我们可以写成xp'+'_cmd'+'shell形式,如果他将xp_cmdshell 扩展删掉,我们可以通过xplog70.dll文件来恢复,呵呵,,,具体自己查找下数据库的知识,当然我们也可以用别的扩展!所以说SQL injection不仅仅是一门技术,更要有灵活的头脑和扎实的数据库知识,特别是对SQL语言的掌握程度,如果不会SQL语言,你永远都是生搬硬套,遇到障碍就过不去了!
3、PHP+MYSQL数据库类型
PHP+MYSQL一直以来都认为是最安全的组合,不过一些文件没有过滤单引号、反斜线等,我们也可以来进行注入,不过在最新的php安装程序里的php.ini文件默认都是对这些过滤掉的,所以很大情况下我们是无法对进行注入的,不过也有许多牛人们可以饶过这个限制的!由于我的PHP和MYSQL不是太懂,所以就不能来具体举例来说明了,大家要是有兴趣可以去找写资料来看!!!
需要从根本上解决解决SQL Injection问题。还得从程序本身入手。过滤不能单纯的过滤URL所提交的参数,在表单里的也要过滤,value=后面的可以修改的数据,修改后可以提交到服务器,总之对所有的表单提交的数据以及用户可能对HTML源文件进行修改来控制的所有来自Web服务器外部的数据进行过滤或转换,对单引号、双引号、分号“--”还有对数字键上面的所有特殊字符进行过滤,还有QUERY_STRING环境变量。在服务器上删除一些危险的扩展存储过程,比如xp_cmdshell。有条件装个IDS更好,不敢说无坚不摧,但至少可以阻挡大部分攻击者。
三、一些别的脚本攻击
有些程序没有对cookie或者session进行过滤和检查,就造成了用户可以非法修改提交页面,自己提交修改数据,比如像海阳顶端网木马的以前版本对session没有过滤,我们就可以饶过密码的验证来到达真正的页面,还有就是post提交的问题,像leadbbs的2.77版本就是没有充分的过滤,我们就可以把管理员的密码修改成自己的密码!
还有一个脚本的攻击例子,在Discuz! 2.0 论坛里,因为个人属性缺乏必要的安全确认,所以很容易诱使其他会员自动修改其个人属性内容,特别是注册邮件信息,这关系着登陆密码的修改。
比如我们发个帖子,写上
诱使会员点击这个页面后,就会自动修改该会员注册的email地址为crack.x.h2163.com。当然为了隐蔽性,可以更新后自动关闭,然后调用另外一个假地址。
当然我们也可以利用这个漏洞进行欺骗、隐藏来诱惑管理员来修改我们为管理员等等!大家自己去学习吧!
看了这么多枯燥的东西下面我们再来看看另外一个好玩的漏洞,在百渡里搜索”传奇留言薄“找几个免费的留言本进去,找到他的登陆页面,我找到的一个是:
http://www.conanshome.com/guestbook/login.asp
我们再来看看下面这个连接:
http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎么我们就闯入后台了!!!
什么原因,自己去琢磨吧!
后记:脚本的攻击可以说是防不胜防的,我们所要做的只能是提高编写程序的严谨态度,人为的因素在脚本攻击中是最重要的!
声明:本文提到的漏洞都有一定的攻击性,我们的目的是探讨技术,搞破坏的是小人!所造成的一切后果于作者无关!由于作者水平有限,文中难免有错误之处,欢迎指出!
Ⅳ 跨站脚本攻击漏洞需要用到什么编程语言
这里有5种编程语言,可以对网络安全的问题有所帮助。
C和C++
如果是在网络安全领域,C和C++是相对重要的最基础的编程语言,这些语言提供了对底层IT基础设施(如RAM和系统进程)的访问,如果保护不好,黑客可以很容易地利用这些基础设施。
C编程语言是大多数操作系统的主干。它是一种简洁、灵活和高效的语言,可用于完成多种任务,如加密、图像处理和socket 网络。
从本质上讲,C++通常被认为是C的大哥,它是由crack、meth和steroids混合编译而成的。而C++是一种主要基于C的源代码的很棒的语言。有几个使用C++创建的网络安全程序。例如,Network Mapper,就是是用C+创建的。
下面是C+的创建者Bjarne Stroustrup的一句话:
"C使你很容易射中自己的脚;C+使它变得更难,但当你这样做时,它会把你的整个腿都炸掉。"
如果你具有使用C/C++编程语言的经验,你将知道如何应对针对计算环境中较低级别操作的攻击。
PYTHON
作为一种高级编程语言,Python越来越受到网络专家的欢迎。它之所以吸引人,主要是因为它代码的可读性、语法清晰和简单,以及大量库的可用性。
因此,无论你想做什么任务,你都可以使用Python轻松完成任务。例如,你可以使用该语言将TCP数据包发送到计算机,执行恶意软件分析,并创建入侵检测系统,而对第三方工具的依赖性最小。
然而,与C/C++不同,Python并不是底层的;因此,它可能无法为提供足够硬件资源可见性。
学习Python用于网络安全将使你在职业生涯中占据优势。你将具备编程技能,可以帮助你识别漏洞并发现如何解决它们。
JAVASCRIPT
JavaScript是一种高级编程语言,通常被称为Web的“通用语言”。JavaScript是支持Internet的核心技术。首先,它是为网页添加交互性的语言。尽管JavaScript最初仅在Web浏览器的客户端实现,但现在可以在其他类型的主机基础结构中使用该语言,例如数据库中的服务器端和PDF程序等离线应用程序。
因此,由于它的广泛使用,学习JavaScript可以让你比黑客领先一步。 你将了解网站和其他应用程序如何工作的概念以及用于抵御恶意用户的最佳设计。例如,跨站点脚本是一种基于JavaScript的攻击,涉及攻击者在Web应用程序中植入恶意代码。
如果你有使用JavaScript编程语言的经验,则可以防止发生此类攻击。
PHP
PHP是用于开发网站的服务器端编程语言。由于大多数网站都是使用PHP创建的,因此学习该语言可以让你了解如何抵御入侵者。
例如,DDoS(拒绝服务)攻击通常会尝试使Web应用程序对预期用户不可用。
借助PHP编程知识,再加上JavaScript等其他技术的技能,你可以实现可靠的解决方案来保护Web应用程序。
SQL
SQL(结构化查询语言)主要用于管理存储在数据库中的数据。由于当前数据存储系统的爆炸式增长,SQL被广泛用于维护和检索数据。
同样,黑客越来越多地编排语言来破坏或泄露存储的数据。例如,SQL注入攻击涉及利用SQL漏洞来窃取或修改数据库中保存的数据。因此,充分了解SQL语言对于网络安全至关重要。
总结
以上并不是网络安全最佳编程语言的详尽列表。根据你的具体用例,你可能会发现一种语言比其他语言更适合你的工作。
例如,如果你想专注于保护Web应用程序的前端,那么学习JavaScript可能是你理想的选择。
尽管如此,要成为一个全面的网络极客,你需要采用
Ⅳ 什么是phpinfo xss跨站脚本攻击漏洞
php是一款被广泛使用的编程语言,可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数,许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示,但是phpinfo里存在一些安全问题,导致精心构造数据就可以产生一个跨站脚本漏洞,可以被用来进行攻击。
漏洞成因: phpinfo页面对输入的参数都做了详细的过滤,但是没有对输出的进行charset的指定,而在一些浏览器里如IE7里,你可以让它自动选择编码或者通过一个iframe页面给它指定编码,这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
漏洞来源: http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用: 利用代码如下:
<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
</head>
<body>
<iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">
以上代码在IE7+php 5.2.6测试成功。phpinfo页面的xss甚至比其他页面更加危险,因为如果有phpinfo的存在,恶意攻击者可以利用phpinfo的输出bypass如httponly和一些基础认证。
漏洞影响: 影响所有版本的php和浏览器IE7
漏洞修补: 建议暂时删除站点的phpinfo页面避免被人利用。
Ⅵ php网站用websaber评估有跨站脚本攻击漏洞
防范的方式也简单:
1、程序代码漏洞,这需要有安全意识的程序员才能修复得了,通常是在出现被挂马以后才知道要针对哪方面入手修复;
2、也可以通过安全公司来解决,国内也就Sinesafe和绿盟等安全公司 比较专业.
3.服务器目录权限的“读”、“写”、“执行”,“是否允许脚本”,等等,使用经营已久的虚拟空间提供商的空间,可以有效降低被挂马的几率。
我是从事IDC行业的.以上这些也是平时工作中经常遇到的问题.希望我的回答对你有所帮助.
Ⅶ 这个PHP文件被检测出来跨站脚本攻击漏洞怎么修补急急
if($rw_uid = intval($rws[0])) { $rw_uid 貌似是 因为判断产生的 跨站脚本攻击漏洞
举例: $_GET['rewrite'] = '123_js';
那么 按判断方式 理想得到的结果是 $_GET['uid'] = 123; $_GET['do'] = 'js';
但是 如果 $_GET['rewrite'] = 'js'; 按照判断 结果就等于 $_GET['do'] = 'js';
这是验证不严格导致的 如果严格要求 闯入的必须是 这种格式 数字_字符串 那么就得严格滤过参数
Ⅷ 如何防止跨站点脚本攻击
你好~
XSS漏洞产生的原因:
跨站点脚本的主要原因是程序猿对用户的信任。开发人员轻松地认为用户永远不会试图执行什么出格的事情,所以他们创建应用程序,却没有使用任何额外的代码来过滤用户输入以阻止任何恶意活动。另一个原因是,这种攻击有许多变体,用制造出一种行之有效的XSS过滤器是一件比较困难的事情。
但是这只是相对的,对用户输入数据的”编码”和”过滤”在任何时候都是很重要的,我们必须采取一些针对性的手段对其进行防御。
如何创造一个良好的XSS过滤器来阻止大多数XSS攻击代码
1 .需要重点”编码”和”过滤”的对象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防御XSS有一个原则:
以当前的应用系统为中心,所有的进入应用系统的数据都看成是输入数据(包括从FORM表单或者从数据库获取到的数据),所有从当前应用系统流出的数据都看作是输出(包括输出到用户浏览器或向数据库写入数据)
对输入的数据进行”过滤”,对输出数据进行”编码”。这里的”编码”也要注意,必须针对数据具体的上下文语境进行针对性的编码。例如数据是输出到HTML中的那就要进行HtmlEncode,如果数据是输出到javascript代码中进行拼接的,那就要进行javascriptEncode。
如果不搞清楚数据具体输出的语境,就有可能因为HtmlParser()和javascriptParser()两种解析引擎的执行先后问题导致看似严密的”编码”形同虚设。
2. HtmlEncode HTML编码
它的作用是将字符转换成HTMLEntities,对应的标准是ISO-8859-1
为了对抗XSS,在HtmlEncode中要求至少转换以下字符:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在PHP中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
3. javascriptEncode javascript”编码”
javascriptEncode与HtmlEncode的编码方法不同,HtmlEncode是去编码,而javascriptEncode更多的像转义,它需要使用”\”对特殊字符进行转义。从原理上来讲,这都符合编码函数的一个大原则: 将数据和代码区分开,因为对于HTML Tag来说,我们对其进行”可视化(转换成可以见字符)”的编码可以将数据和HTML的界限分开。而对于javascript来说,我们除了要进行编码之外,还需要对特殊字符进行转义,这样攻击输入的用于”闭合”的特殊字符就无法发挥作用,从而避免XSS攻击,除此之外,在对抗XSS时,还要求输出的变量必须在引号内部,以避免造成安全问题。
escape()
http://www.w3school.com.cn/js/jsref_escape.asp
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列(十六进制\xHH)替换。
利用这个编码函数,不仅能防御XSS攻击,还可以防御一些command注入。
一些开源的防御XSS攻击的代码库:
PHP AntiXSS
这是一个不错的PHP库,可以帮助开发人员增加一层保护,防止跨站脚本漏洞。
https://code.google.com/p/php-antixss/
xss_clean.php filter
https://gist.github.com/mbijon/1098477
HTML Purifier
http://htmlpurifier.org/
xssprotect
https://code.google.com/p/xssprotect/
XSS HTML Filter
http://finn-no.github.io/xss-html-filter/
原文地址:http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/
希望可以帮助到你~望采纳哦~谢谢~
Ⅸ 如何修复PHP跨站脚本攻击漏洞
你这截图上不是有方法么,检查后台的代码,将用户提交过来的信息进行htmlspecialchars()后在操作数据。或者自己编写代码,将特殊符号进行正则匹配然后给替换掉。
Ⅹ 如何实现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()函数。