当前位置: 首页 > news >正文

网上做网站钱被骗了报案有用吗wordpress排版代码

网上做网站钱被骗了报案有用吗,wordpress排版代码,中国建设银行网站查询密码是什么意思,凡科h5登录入口在提及安全性问题时#xff0c;需要注意#xff0c;除了实际的平台和操作系统安全性问题之外#xff0c;您还需要确保编写安全的应用程序。在编写 PHP 应用程序时#xff0c;请应用下面的七个习惯以确保应用程序具有最好的安全性#xff1a; 验证输入保护文件系统保护数据…在提及安全性问题时需要注意除了实际的平台和操作系统安全性问题之外您还需要确保编写安全的应用程序。在编写 PHP 应用程序时请应用下面的七个习惯以确保应用程序具有最好的安全性 验证输入保护文件系统保护数据库保护会话数据保护跨站点脚本Cross-site scriptingXSS漏洞检验表单 post针对跨站点请求伪造Cross-Site Request ForgeriesCSRF进行保护验证输入 在提及安全性问题时验证数据是您可能采用的最重要的习惯。而在提及输入时十分简单不要相信用户。您的用户可能十分优秀并且大多数用户可能完全按照期望来使用应用程序。但是只要提供了输入的机会也就极有可能存在非常糟糕的输入。作为一名应用程序开发人员您必须阻止应用程序接受错误的输入。仔细考虑用户输入的位置及正确值将使您可以构建一个健壮、安全的应用程序。 虽然后文将介绍文件系统与数据库交互但是下面列出了适用于各种验证的一般验证提示 使用白名单中的值始终重新验证有限的选项使用内置转义函数验证正确的数据类型如数字白名单中的值White-listed value是正确的值与无效的黑名单值Black-listed value相对。两者之间的区别是通常在进行验证时可能值的列表或范围小于无效值的列表或范围其中许多值可能是未知值或意外值。 在进行验证时记住设计并验证应用程序允许使用的值通常比防止所有未知值更容易。例如要把字段值限定为所有数字需要编写一个确保输入全都是数字的例程。不要编写用于搜索非数字值并在找到非数字值时标记为无效的例程。 保护文件系统 2000 年 7 月一个 Web 站点泄露了保存在 Web 服务器的文件中的客户数据。该 Web 站点的一个访问者使用 URL 查看了包含数据的文件。虽然文件被放错了位置但是这个例子强调了针对攻击者保护文件系统的重要性。 如果 PHP 应用程序对文件进行了任意处理并且含有用户可以输入的变量数据请仔细检查用户输入以确保用户无法对文件系统执行任何不恰当的操作。清单 1 显示了下载具有指定名的图像的 PHP 站点示例。 清单 1. 下载文件 ?php if ($_POST[submit] Download) {$file $_POST[fileName];header(Content-Type: application/x-octet-stream);header(Content-Transfer-Encoding: binary);header(Content-Disposition: attachment; filename\ . $file . \; );$fh fopen($file, r);while (! feof($fh)){echo(fread($fh, 1024));}fclose($fh); } else {echo(htmlhead);echo(titleGuard your filesystem/title/head);echo(bodyform id\myFrom\ action\ . $_SERVER[PHP_SELF] .\ method\post\);echo(divinput type\text\ name\fileName\ value\);echo(isset($_REQUEST[fileName]) ? $_REQUEST[fileName] : );echo(\ /);echo(input type\submit\ value\Download\ name\submit\ //div);echo(/form/body/html); }正如您所见清单 1 中比较危险的脚本将处理 Web 服务器拥有读取权限的所有文件包括会话目录中的文件请参阅 “保护会话数据”甚至还包括一些系统文件例如 /etc/passwd。为了进行演示这个示例使用了一个可供用户键入文件名的文本框但是可以在查询字符串中轻松地提供文件名。 同时配置用户输入和文件系统访问权十分危险因此最好把应用程序设计为使用数据库和隐藏生成的文件名来避免同时配置。但是这样做并不总是有效。清单 2 提供了验证文件名的示例例程。它将使用正则表达式以确保文件名中仅使用有效字符并且特别检查圆点字符..。 清单 2. 检查有效的文件名字符 function isValidFileName($file) {/* dont allow .. and allow any word character \ / */return preg_match(/^(((?:\.)(?!\.))|\w)$/, $file); }回页首 保护数据库 2008 年 4 月美国某个州的狱政局在查询字符串中使用了 SQL 列名因此泄露了保密数据。这次泄露允许恶意用户选择需要显示的列、提交页面并获得数据。这次泄露显示了用户如何能够以应用程序开发人员无法预料的方法执行输入并表明了防御 SQL 注入攻击的必要性。 清单 3 显示了运行 SQL 语句的示例脚本。在本例中SQL 语句是允许相同攻击的动态语句。此表单的所有者可能认为表单是安全的因为他们已经把列名限定为选择列表。但是代码疏忽了关于表单欺骗的最后一个习惯 — 代码将选项限定为下拉框并不意味着其他人不能够发布含有所需内容的表单包括星号 [*]。 清单 3. 执行 SQL 语句 html head titleSQL Injection Example/title /head body form idmyFrom action?php echo $_SERVER[PHP_SELF]; ?methodpost divinput typetext nameaccount_numbervalue?php echo(isset($_POST[account_number]) ? $_POST[account_number] : ); ? / select namecol option valueaccount_numberAccount Number/option option valuenameName/option option valueaddressAddress/option /select input typesubmit valueSave namesubmit //div /form ?php if ($_POST[submit] Save) {/* do the form processing */$link mysql_connect(hostname, user, password) or die (Could not connect . mysql_error());mysql_select_db(test, $link);$col $_POST[col];$select SELECT . $col . FROM account_data WHERE account_number . $_POST[account_number] . ; ;echo p . $select . /p;$result mysql_query($select) or die(p . mysql_error() . /p);echo table;while ($row mysql_fetch_assoc($result)) {echo tr;echo td . $row[$col] . /td;echo /tr;}echo /table;mysql_close($link); } ? /body /html因此要形成保护数据库的习惯请尽可能避免使用动态 SQL 代码。如果无法避免动态 SQL 代码请不要对列直接使用输入。清单 4 显示了除使用静态列外还可以向帐户编号字段添加简单验证例程以确保输入值不是非数字值。 清单 4. 通过验证和 mysql_real_escape_string() 提供保护 html head titleSQL Injection Example/title /head body form idmyFrom action?php echo $_SERVER[PHP_SELF]; ?methodpost divinput typetext nameaccount_numbervalue?php echo(isset($_POST[account_number]) ? $_POST[account_number] : ); ? / input typesubmitvalueSave namesubmit //div /form ?php function isValidAccountNumber($number) {return is_numeric($number); }if ($_POST[submit] Save) {/* Remember habit #1--validate your data! */if (isset($_POST[account_number]) isValidAccountNumber($_POST[account_number])) {/* do the form processing */$link mysql_connect(hostname, user, password) ordie (Could not connect . mysql_error());mysql_select_db(test, $link);$select sprintf(SELECT account_number, name, address . FROM account_data WHERE account_number %s;,mysql_real_escape_string($_POST[account_number]));echo p . $select . /p;$result mysql_query($select) or die(p . mysql_error() . /p);echo table;while ($row mysql_fetch_assoc($result)) {echo tr;echo td . $row[account_number] . /td;echo td . $row[name] . /td;echo td . $row[address] . /td;echo /tr;}echo /table;mysql_close($link);} else {echo span style\font-color:red\ .Please supply a valid account number!/span;} } ? /body /html本例还展示了 mysql_real_escape_string() 函数的用法。此函数将正确地过滤您的输入因此它不包括无效字符。如果您一直依赖于 magic_quotes_gpc那么需要注意它已被弃用并且将在 PHP V6 中删除。从现在开始应避免使用它并在此情况下编写安全的 PHP 应用程序。此外如果使用的是 ISP则有可能您的 ISP 没有启用 magic_quotes_gpc。 最后在改进的示例中您可以看到该 SQL 语句和输出没有包括动态列选项。使用这种方法如果把列添加到稍后含有不同信息的表中则可以输出这些列。如果要使用框架以与数据库结合使用则您的框架可能已经为您执行了 SQL 验证。确保查阅文档以保证框架的安全性如果仍然不确定请进行验证以确保稳妥。即使使用框架进行数据库交互仍然需要执行其他验证。 回页首 保护会话 默认情况下PHP 中的会话信息将被写入临时目录。考虑清单 5 中的表单该表单将显示如何存储会话中的用户 ID 和帐户编号。 清单 5. 存储会话中的数据 ?php session_start(); ? html head titleStoring session information/title /head body ?php if ($_POST[submit] Save) {$_SESSION[userName] $_POST[userName];$_SESSION[accountNumber] $_POST[accountNumber]; } ? form idmyFrom action?php echo $_SERVER[PHP_SELF]; ?methodpost divinput typehidden nametoken value?php echo $token; ? / input typetext nameuserNamevalue?php echo(isset($_POST[userName]) ? $_POST[userName] : ); ? / br / input typetext nameaccountNumbervalue?php echo(isset($_POST[accountNumber]) ? $_POST[accountNumber] : ); ? / br / input typesubmit valueSave namesubmit //div /form /body /html清单 6 显示了 /tmp 目录的内容。 清单 6. /tmp 目录中的会话文件 -rw------- 1 _www wheel 97 Aug 18 20:00 sess_9e4233f2cd7cae35866cd8b61d9fa42b正如您所见在输出时参见清单 7会话文件以非常易读的格式包含信息。由于该文件必须可由 Web 服务器用户读写因此会话文件可能为共享服务器中的所有用户带来严重的问题。除您之外的某个人可以编写脚本来读取这些文件因此可以尝试从会话中取出值。 清单 7. 会话文件的内容 userName|s:5:ngood;accountNumber|s:9:123456789;存储密码 不管是在数据库、会话、文件系统中还是在任何其他表单中无论如何密码都决不能存储为纯文本。处理密码的最佳方法是将其加密存储并相互比较加密的密码。虽然如此在实践中人们仍然把密码存储到纯文本中。只要使用可以发送密码而非重置密码的 Web 站点就意味着密码是存储在纯文本中或者可以获得用于解密的代码如果加密的话。即使是后者也可以找到并使用解密代码。 您可以采取两项操作来保护会话数据。第一是把您放入会话中的所有内容加密。但是正因为加密数据并不意味着绝对安全因此请慎重采用这种方法作为保护会话的惟一方式。备选方法是把会话数据存储在其他位置中比方说数据库。您仍然必须确保锁定数据库但是这种方法将解决两个问题第一它将把数据放到比共享文件系统更加安全的位置第二它将使您的应用程序可以更轻松地跨越多个 Web 服务器同时共享会话可以跨越多个主机。 要实现自己的会话持久性请参阅 PHP 中的session_set_save_handler() 函数。使用它您可以将会话信息存储在数据库中也可以实现一个用于加密和解密所有数据的处理程序。清单 8 提供了实现的函数用法和函数骨架示例。您还可以在 参考资料 小节中查看如何使用数据库。 清单 8. session_set_save_handler() 函数示例 function open($save_path, $session_name) {/* custom code */return (true); }function close() {/* custom code */return (true); }function read($id) {/* custom code */return (true); }function write($id, $sess_data) {/* custom code */return (true); }function destroy($id) {/* custom code */return (true); }function gc($maxlifetime) {/* custom code */return (true); }session_set_save_handler(open, close, read, write, destroy, gc);回页首 针对 XSS 漏洞进行保护 XSS 漏洞代表 2007 年所有归档的 Web 站点的大部分漏洞请参阅 参考资料。当用户能够把 HTML 代码注入到您的 Web 页面中时就是出现了 XSS 漏洞。HTML 代码可以在脚本标记中携带 JavaScript 代码因而只要提取页面就允许运行 JavaScript。清单 9 中的表单可以表示论坛、维基、社会网络或任何可以输入文本的其他站点。 清单 9. 输入文本的表单 html head titleYour chance to input XSS/title /head body form idmyFrom actionshowResults.php methodpost divtextarea namemyText rows4 cols30/textareabr / input typesubmit valueDelete namesubmit //div /form /body /html清单 10 演示了允许 XSS 攻击的表单如何输出结果。 清单 10. showResults.php html head titleResults demonstrating XSS/title /head body ?php echo(pYou typed this:/p); echo(p); echo($_POST[myText]); echo(/p); ? /body /html清单 11 提供了一个基本示例在该示例中将弹出一个新窗口并打开 Google 的主页。如果您的 Web 应用程序不针对 XSS 攻击进行保护则会造成严重的破坏。例如某个人可以添加模仿站点样式的链接以达到欺骗phishing目的请参阅 参考资料。 清单 11. 恶意输入文本样例 script typetext/javascriptmyRef window.open(http://www.google.com,mywin, left20,top20,width500,height500,toolbar1,resizable0);/script要防止受到 XSS 攻击只要变量的值将被打印到输出中就需要通过 htmlentities() 函数过滤输入。记住要遵循第一个习惯在 Web 应用程序的名称、电子邮件地址、电话号码和帐单信息的输入中用白名单中的值验证输入数据。 下面显示了更安全的显示文本输入的页面。 清单 12. 更安全的表单 html head titleResults demonstrating XSS/title /head body ?php echo(pYou typed this:/p); echo(p); echo(htmlentities($_POST[myText])); echo(/p); ? /body /html回页首 针对无效 post 进行保护 表单欺骗 是指有人把 post 从某个不恰当的位置发到您的表单中。欺骗表单的最简单方法就是创建一个通过提交至表单来传递所有值的 Web 页面。由于 Web 应用程序是没有状态的因此没有一种绝对可行的方法可以确保所发布数据来自指定位置。从 IP 地址到主机名所有内容都是可以欺骗的。清单 13 显示了允许输入信息的典型表单。 清单 13. 处理文本的表单 html head titleForm spoofing example/title /head body ?php if ($_POST[submit] Save) {echo(pI am processing your text: );echo($_POST[myText]);echo(/p); } ? /body /html清单 14 显示了将发布到清单 13 所示表单中的表单。要尝试此操作您可以把该表单放到 Web 站点中然后把清单 14 中的代码另存为桌面上的 HTML 文档。在保存表单后在浏览器中打开该表单。然后可以填写数据并提交表单从而观察如何处理数据。 清单 14. 收集数据的表单 html head titleCollecting your data/title /head body form actionprocessStuff.php methodpost select nameanswer option valueYesYes/option option valueNoNo/option /select input typesubmit valueSave namesubmit / /form /body /html表单欺骗的潜在影响是如果拥有含下拉框、单选按钮、复选框或其他限制输入的表单则当表单被欺骗时这些限制没有任何意义。考虑清单 15 中的代码其中包含带有无效数据的表单。 清单 15. 带有无效数据的表单 html head titleCollecting your data/title /head body form actionhttp://path.example.com/processStuff.php methodpostinput typetext nameanswervalueThere is no way this is a valid response to a yes/no answer... / input typesubmit valueSave namesubmit / /form /body /html思考一下如果拥有限制用户输入量的下拉框或单选按钮您可能会认为不用担心验证输入的问题。毕竟输入表单将确保用户只能输入某些数据对吧要限制表单欺骗需要进行验证以确保发布者的身份是真实的。您可以使用一种一次性使用标记虽然这种技术仍然不能确保表单绝对安全但是会使表单欺骗更加困难。由于在每次调用表单时都会更改标记因此想要成为攻击者就必须获得发送表单的实例去掉标记并把它放到假表单中。使用这项技术可以阻止恶意用户构建持久的 Web 表单来向应用程序发布不适当的请求。清单 16 提供了一种表单标记示例。 清单 16. 使用一次性表单标记 ?php session_start(); ? html head titleSQL Injection Test/title /head body ?phpecho Session token . $_SESSION[token]; echo br /; echo Token from form . $_POST[token]; echo br /;if ($_SESSION[token] $_POST[token]) {/* cool, its all good... create another one */} else {echo h1Go away!/h1; } $token md5(uniqid(rand(), true)); $_SESSION[token] $token; ? form idmyFrom action?php echo $_SERVER[PHP_SELF]; ?methodpost divinput typehidden nametoken value?php echo $token; ? / input typetext namemyTextvalue?php echo(isset($_POST[myText]) ? $_POST[myText] : ); ? / input typesubmit valueSave namesubmit //div /form /body /html回页首 针对 CSRF 进行保护 跨站点请求伪造CSRF 攻击是利用用户权限执行攻击的结果。在 CSRF 攻击中您的用户可以轻易地成为预料不到的帮凶。清单 17 提供了执行特定操作的页面示例。此页面将从 cookie 中查找用户登录信息。只要 cookie 有效Web 页面就会处理请求。 清单 17. CSRF 示例 img srchttp://www.example.com/processSomething?id123456789 /CSRF 攻击通常是以 img 标记的形式出现的因为浏览器将在不知情的情况下调用该 URL 以获得图像。但是图像来源可以是根据传入参数进行处理的同一个站点中的页面 URL。当此 img 标记与 XSS 攻击结合在一起时 — 在已归档的攻击中最常见 — 用户可以在不知情的情况下轻松地对其凭证执行一些操作 — 因此是伪造的。 为了保护您免受 CSRF 攻击需要使用在检验表单 post 时使用的一次性标记方法。此外使用显式的 $_POST 变量而非 $_REQUEST。清单 18 演示了处理相同 Web 页面的糟糕示例 — 无论是通过 GET 请求调用页面还是通过把表单发布到页面中。 清单 18. 从 $_REQUEST 中获得数据 html head titleProcesses both posts AND gets/title /head body ?php if ($_REQUEST[submit] Save) {echo(pI am processing your text: );echo(htmlentities($_REQUEST[text]));echo(/p); } ? /body /html清单 19 显示了只使用表单 POST 的干净页面。 清单 19. 仅从 $_POST 中获得数据 html head titleProcesses both posts AND gets/title /head body ?php if ($_POST[submit] Save) {echo(pI am processing your text: );echo(htmlentities($_POST[text]));echo(/p); } ? /body /html回页首 结束语 从这七个习惯开始尝试编写更安全的 PHP Web 应用程序可以帮助您避免成为恶意攻击的受害者。和许多其他习惯一样这些习惯最开始可能很难适应但是随着时间的推移遵循这些习惯会变得越来越自然。 记住第一个习惯是关键验证输入。在确保输入不包括无效值之后可以继续保护文件系统、数据库和会话。最后确保 PHP 代码可以抵抗 XSS 攻击、表单欺骗和 CSRF 攻击。形成这些习惯后可以帮助您抵御一些简单的攻击。
http://www.pierceye.com/news/663438/

相关文章:

  • 免费个人手机网站九八智能建站
  • 中山网站备案如何做购物网站
  • 常见的简单的网站制作建设网站的好公司
  • 邯郸网站制作建设wordpress+怎么迁移
  • 设计创意广告上海企业网站优化
  • 自己做网站需要购买服务器吗WordPress文章相册修改
  • 校园招聘哪个网站做的好学做川菜网站
  • 大足网站建设公司医院网站建设熊掌号
  • 做网站编辑是不是也要做推广做蛋白go分析网站
  • 免费品牌网站制作云南电商网站建设
  • 宿迁莱布拉网站建设常州做网站建设的公司
  • 广东网站建站系统哪家好常州网站搭建公司
  • 400网站建设推广软件工程师工资
  • 专门做正品的网站手机版深圳市门户网站建设怎么样
  • 做外贸比较好的网站有哪些北京短视频代运营
  • 建站公司学习筑梦网站建设
  • 手工艺品网站建设侧胡顺个人简历表格可填写
  • 电商网站竞价推广策略淘宝做问卷的网站
  • 门窗 东莞网站建设婚庆公司收费标准
  • 网站页面下沉的特效代码网络建设存在的问题
  • 给网站做维护是什么工作网页怎么赚钱
  • 三丰云做游戏网站win主机安装wordpress
  • 网站建设黄荣vuejs做视频网站设计
  • 手机怎样下载安装建设银行网站企业通过网络推广成功的案例
  • 门户网站开发工具软件哪个公司的网络最好用
  • 河南省住房和城乡建设厅查询网站首页舆情网站推荐
  • 网页设计是网站建设与管理的内容吗公司网络营销的方案思路
  • 商业授权网站标题优化技巧
  • 班级网站做哪些方面阿里云市场网站建设
  • 2345网站登录电子工程师有前途吗