php防止xss(php防止xss攻击函数)

今日新闻 2022年06月02日
本文导读目录:

如何有效防止XSS攻击/AJAX跨域攻击

1,利用字符过滤漏洞,提交恶意js代码,当用户打开页面时执行

2,需要填写图片地址或css等直接在页面加载时执行的地方,填写恶意js [javascript:xxxx],当用户打开包含图片的页面时,可以执行js。比如GET s1.game.com/fight/:id 表示发兵到某个用户,虽然做了用户验证,但没做来源验证,用户只需将这个地址发到同用户的论坛作为图片地址即可执行

3,通过跳转页面漏洞,比如 refer.php?message=xxxx ,页面上直接用 $_GET['message'] 的话,就会造成xss漏洞,把message的参数换成js代码或恶意网址,即可盗取用户cookie,或执行恶意js,或跳转到钓鱼页面等

4,利用浏览器或服务器0day漏洞

1,XSS主要是你的页面可以运行用户写的js,所以对所有的用户提交的数据进行过滤,对于判断用户是否登录状态的cookie信息进行加密,并且加上Ip信息,这样基本被盗取也无法获取登录权限

2,对update或delete的操作采用post方式提交,每次form里加一个唯一验证字符串,用hiden方式提交,用于服务器验证是否来自用户客户端

3,跳转程序需要对传递的url进行匹配判断,只允许特定的格式

4,时常关注安全方面的消息,一有漏洞即刻不上

Apache/PHP环境,怎么防止WebShell啊,头疼

etc/passwd,/etc/init.d目录本来就是所有用户都可以访问的。

与其设置webshell的权限,不如做好web的安全开发,关闭不安全方法;;做好输入校验,输出编码,防止SQL注入,跨站脚本,XSS;以及安全配置,关闭web容器控制台……

另外就是要做好操作系统的安全防护,用户名密码不能太简单,增加防火墙

只要你的webshell不被非法获取,不额外设置webshell有什么关系。

php网站怎样防御xss攻击?

过滤用户输入的script/script以及其他的HTML标签等。。

phpmyadmin error.php xss漏洞怎么解决

phpMyAdmin是用PHP编写的工具,用于通过WEB管理MySQL。

phpMyAdmin实现上存在漏洞,攻击者可利用此漏洞执行欺骗操作。

此漏洞源于通过"type"和"error"参数发送给error.php的输入未正确验证即开始使用,导致在受影响的站点的用户浏览器会话中呈现受限的HTML内容,执行欺骗攻击。

如何防止跨站点脚本攻击

你好~

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工程师啊???

从各个方面来说

知识面,从linux到js,从网站加速到cdn,不用非常精通,但是常用的要了解,比如linux下的grep cronotab ps及各种命令行工具,http的lastmodified 到etag 到expires,各种技术动态到最新最酷的技术

代码能力 要熟悉一到几个框架,常见的比如CI zend 到yaf ,最新的laraval,要有最少两个能熟练使用,快速干活的,也要有能拿来靠拢到设计模式 MVC上之类的装B用的,从基本的防xss 到快速debug代码定位问题, 从技术选型到DB建表,要表现出具体的能力

沟通解决问题能力 PHP从来都只是工具,任何公司招过去都是要解决问题的,作为高级PHPer,要能跟业务方进行畅通的沟通,梳理出有价值的需求,砍掉性价比极低或者无异于的需求

团队管理能力 需求确定了,架构设计好了,还要带领菜鸟们做出高大上的网站,把控整体进度,帮助菜鸟改进垃圾代码,风险控制(比如进度),诸如此类

php下怎样防止XSS攻击

在PHP中修补XSS漏洞,我们可以使用三个PHP函数。

这些函数主要用于清除HTML标志,这样就没办法注入代码了。使用更多的函数是htmlspecialchars() ,它可以将所有的""与""符号转换成"" 与"gt;"。其它可供选择的函数还有htmlentities(), 它可以用相应的字符实体(entities)替换掉所有想要替换掉的特征码(characters)。

PHP Code:

?

// 这里的代码主要用于展示这两个函数之间输出的不同

$input = 'scriptalert(1);/script';

echo htmlspecialchars($input) . 'br /';

echo htmlentities($input);

?

htmlentities()的另一个例子

PHP Code:

?php

$str = "A 'quote' is bbold/b";

echo htmlentities($str);

echo htmlentities($str, ENT_QUOTES);

?

第一个显示: A 'quote' is bbold/b

第二个显示:A 'quote' is bbold/b

htmlspecialchars()使用实例

PHP Code:

?php

$new = htmlspecialchars("a href='test'Test/a", ENT_QUOTES);

echo $new;

?

显示: a href='test'Test/a

strip_tags()函数代替.删除所有的HTML元素(elements),除了需要特别允许的元素之外,如:i, b 或p.

strip_tags()使用实例

PHP Code:

?php

$text = 'pTest paragraph./p!-- Comment -- Other text';

echo strip_tags($text);

echo "\n";

// allow p

echo strip_tags($text, 'p');

?

现在我们至少已经知道有这些函数了,当我们发现我们的站点存在XSS漏洞时就可以使用这些代码了。我最近在我的站点上的GoogleBig(一个Mybb论坛的插件)视频部分发现了一个XSS漏洞,因此我就在想如何使用这些函数写段代码来修补这个搜索漏洞。

首先我发现问题出在search.php这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:

PHP Code:

function search($query, $page)

{

global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;

$option = trim($option);

$query = trim($query);

$query = FixQuotes(nl2br(filter_text($query)));

$db-escape_string($query);

$db-escape_string($option);

alpha_search($query);

...

在这种情况下,我们通过使用$query这一值作为变量,然后使用htmlentities()这一函数:

PHP Code:

$query = FixQuotes(nl2br(filter_text(htmlentities($query))));

如果你对这三种函数还有有疑问可以使用PHP手册来查看:

http://it.php.net/htmlentities

http://it2.php.net/htmlspecialchars

http://it2.php.net/strip_tags

关键词: php防止xss
我来说两句
黑客技术 2年前 (2022-06-02) | 回复
hp这一文件上,现在让我们看看这个查询及输出查询结果中的部分代码研究一下:PHP Code:function search($query, $page){global $db, $bgcolor2, $bgcolor4, $sitename,
黑客技术 2年前 (2022-06-02) | 回复
户输入数据的”编码”和”过滤”在任何时候都是很重要的,我们必须采取一些针对性的手段对其进行防御。如何创造一个良好的XSS过滤器来阻止大多数XSS攻击代码1 .需要重点”编码”和”过滤”的对象The URLHTTP referrer objectsGET parameter
黑客技术 2年前 (2022-06-02) | 回复
~望采纳哦~谢谢~怎么才能成为一名高级php工程师啊???从各个方面来说知识面,从linux到js,从网站加速到cdn,不用非常精通,但是常用的要了解,比如linux下的grep cronotab ps及各种命令行工具,
黑客技术 2年前 (2022-06-02) | 回复
置,关闭web容器控制台……另外就是要做好操作系统的安全防护,用户名密码不能太简单,增加防火墙只要你的webshell不被非法获取,不额外设置webshell有什么关系。php网站怎样防御xss攻击?过滤用户输入的script/script以及其他的HTML标签等。。phpmyadmin