这是一个奇怪的.我正在重用代码库,遗憾的是不能更新.这段代码打电话给HttpContext.Current.Request.QueryString.理想情况下,我需要在每次发出请求时将值推送到此集合中.这可能 - 也许在HTTP模块中?
我试图阻止XSS攻击,所以我使用html敏捷包来使我的白名单和Microsoft反跨站点脚本库来处理其余的.
现在我正在考虑编码所有html hrefs.我得到一大串可以包含href的html代码.如果您对MS库有一个URL编码,但如果您对整个URl进行编码,则无法使用它.因此在示例中,它们只是对查询字符串进行编码
UrlEncode不受信任的输入用于URL(例如查询字符串中的值)单击此处!
http://msdn.microsoft.com/en-us/library/aa973813.aspx
所以现在我的问题是我如何通过href解析并找到查询字符串.它总是只是"?" 然后查询字符串或它可以有空格并以不同的方式写入?
编辑
我不会写这个网址,而是会分享这些网址的用户.所以这就是为什么我需要一种方法来确保我获得所有查询字符串而不仅仅是有效格式的字符串.如果它可以工作无效格式我也必须抓住这些.黑客不会关心它是否是有效的格式,只要它仍然能够做到他们想要的.
我有时需要通过URL将其他参数传递给页面.我之前在路由文件中使用了几个通用占位符,我将其称为"genus"和"species".这曾经有用,但现在它已开始使用查询字符串生成URL.
Rails版本是2.3.8.
路线文件是:
ActionController::Routing::Routes.draw do |map|
map.root :controller => 'main', :action => 'index'
map.connect ':controller', :action => 'index'
map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:genus/:id'
map.connect ':controller/:action/:genus/:species/:id'
end
Run Code Online (Sandbox Code Playgroud)
索引页面是:
<p>
<%= url_for :controller => 'main', :action => 'test', :genus => 42, :id => 1 %>
</p>
Run Code Online (Sandbox Code Playgroud)
测试页面是
<p>
<%= params.inspect -%>
</p>
Run Code Online (Sandbox Code Playgroud)
索引页面显示/ main/test?genus = 42&id = 1我希望/ main/test/42/1.
但是,如果我转到/ main/test/42/1,那么我会看到正确的参数:
{"controller"=>"main","action"=>"test","genus"=>"42","id"=>"1"}
我有什么想法我做错了吗?
我试图通过单击按钮将当前aspx页面的URL更改为其他URL。使用Request.Url.AbsoluteUri我可以获取url,但是可以修改吗?如果是,我将采取什么行动,这意味着是新的请求还是回发。
请让我知道您的意见。
谢谢,Mehul makwana
我遇到了一个非常奇怪的问题,在我的查询中,"++"作为文本的一部分.但是当我将查询stirng值分配给字符串时,++将变为两个空格.我如何准确地获得作为查询字符串传递的内容?
我观察到querystirng集合有"++"但是当我执行Request.QueryString ["search"].ToString()"++"消失了,我在立即窗口中检查了.
我使用C#2.0
网址:/default.aspx?search = test ++
string t = Request.QueryString["search"].ToString();
Run Code Online (Sandbox Code Playgroud) 我正在为两个业务组构建一个通用的Web应用程序.徽标/横幅需要根据查询字符串进行更改.例如,如果网址http://foo.com/test?bg=a显示商家组a的徽标,则网址http://foo.com/test?bg=b显示商家组b的徽标.如果我只有一个动作,这不是问题.但我有很多行动.
我可以检查所有操作的查询字符串,但必须有一个很好的方法来做到这一点.我有一种感觉,我需要做一些路由的东西,但只是不知道如何.谁能告诉我怎么做?
是否可以使用apache .htaccess基于URL的查询字符串应用HTTP头指令?
例如,根据此资源http://code.google.com/web/controlcrawlindex/docs/robots_meta_tag.html标题为"实际实施X-Robots-Tag with Apache"一节,它说明了以下.htaccess文件指令可以使用:
<Files ~ "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</Files>
Run Code Online (Sandbox Code Playgroud)
我正在寻找以下内容:
<QueryString ~ "m=_!">
Header set X-Robots-Tag "noindex, nofollow"
</QueryString>
Run Code Online (Sandbox Code Playgroud)
这样,搜索引擎就不会将以下网址编入索引:
http://domain.com/?m=_!ajax_html_snippet
Run Code Online (Sandbox Code Playgroud)
任何提示/提示/线索将非常感激.谢谢.
是否有一种方法可以在WebBrowser控件中访问Query参数,还是我们必须手动拆分字符串?例如:
http://www.mysite.com?paramter=12345
Run Code Online (Sandbox Code Playgroud)
我只需要访问参数的值.我知道在使用xaml页面时我们有QueryString属性.使用网页有类似的东西吗?
如何在查询字符串中发送true或false值然后在php中使用它?我正在尝试如下操作,但即使两者都设置为false,它也会让我真实.我将从htaccess文件中获取这些值.
<?php
$var = $_GET['a'];
$bar = $_GET['b'];
if ($var && $bar)
{
echo "True";
}else
{
echo "False";
}
echo '<a href=?a=false&b=false>Check</a>';
?>
Run Code Online (Sandbox Code Playgroud) 通常当我设计一个允许用户登录的站点时,我从数据库创建用户信息的会话变量,并确保在站点的每个页面上至少有一个会话变量可用,否则用户将被重定向到像这样的登录页面:
if(!isset($_SESSION['username']))
{
header("Location:login.php");
}
Run Code Online (Sandbox Code Playgroud)
但后来我一直在思考,为什么不使用查询字符串,而不是使用会话变量来验证用户.我的想法是创建基于一些因素,唯一的字符串,如date(month, year, day)或access time(day, hour)或者ip address,也许hash它使用md5这样的URL可能看起来像这样
://mysite.com/dashboard?auth=12jsdnnau819wiskj3jdnck23ksj12j3.
所以现在我可以轻松地注销用户,如果他没有访问该网站超过一个小时或超过一天.但我不知道这是不是一个好主意,这就是我在这里寻求更好的方法的建议.谢谢大家.
query-string ×10
asp.net ×5
c# ×3
php ×2
routing ×2
url ×2
.htaccess ×1
.net-3.5 ×1
asp.net-mvc ×1
boolean ×1
http-headers ×1
nofollow ×1
noindex ×1
request ×1
security ×1
session ×1
silverlight ×1