在使用Python登录后删除ASPX,但每次登录都会给你一个不同的URL



我正试图从我的大学网站上获取班上每个卷号的考试成绩数据。

通常情况下,您可以将url(www.example.com/login.aspx)与登录信息一起POST,并在登录后获取固定url(www.example.com/home.aspx)。

但我试图获得的页面对于输入的每个卷号都有不同的URL。登录页面的URL如下所示:;www.example.com/View.aspx;。登录后,结果页面的URL看起来像:";www.example.com/ovengine.aspx?enc=BunchOfNumbersandAlphabets";。这些数字和字母对于每个卷号都是不同的。

所以我不能在代码中放入URL来获得最终结果。我不知道如何在登录后自动获得页面,而不提及它的URL。

但我试图获得的页面对于输入的每个卷号都有不同的URL

不,它是同一个URL,并且URL有一个参数。你经常在URL中看到这个。

因此,对于温度站点,它可能看起来像

www.TheWeatherSite.com/?城市=罗马

所以,上面的URL总是一样的,但是网站"城市;参数用于罗马城。因此,web代码隐藏可以在代码隐藏中使用/get/grab/consume参数。这样我们就不会为每个城市的每个天气创建一个网页。

所以你创建一个页面,然后通过网页一个城市值,代码可以消费和使用。(比如从数据库中查询城市=以上值的温度数据)。

因此,你必须提前知道你想要哪个城市的天气。当然,这种方法很好,因为你不必创建一个新的网站页面来显示某个城市的天气。

实际上,您正在将一个值传递给将运行的代码,并使用传递的值。

您的示例URL也是如此。你注意到有一个参数叫做";enc";。

因此,背后的网站代码是:

Grab,get,设置用户ID。但是,用户ID将来自安全系统和身份验证提供商。除非你以特定用户的身份登录,否则你不会得到该用户id。

因此,两者都有一个用户ID(仅限于内部代码)。而";enc";值作为URL中的参数是必需的。

因此,请注意,在上面的sql中,我们很可能需要studentID和"enc";来自另一个页面的某个OTHER代码从数据库中获取的值。

现在那个有趣的";GUID";(请谷歌一下GUID是什么),从程序员的角度来看,从数据库中提取这一行数据就足够了,但在查询中也使用登录的用户的内部id?

那么,只有给定的登录用户才能看到属于他们自己的一组值。

换句话说?

只有一个喝醉了、没有工作的牛仔小丑才会需要那个GUID来提取数据。因为如果是这样的话,那么任何用户都可以键入GUID并查看其他人的标记。然而;一些";安全性,因为用户永远猜不到该值。

如果他们使用";城市;比如我的第一个URL和参数示例?是的,你可以猜测并知道要输入的城市值。或者他们可以使用学生姓名,甚至学生编号——这些你可以相对轻松地猜测。

但是,对于这样的数据,毫无疑问,用户采用了比数据库中的行号或PK id等起始数字更困难的东西。那么,当代码将结果添加到该表中时?他们还添加了某种类型的GUID,并将其保存为数据库中的一行。

因此,您不仅需要GUID,而且该URL只适用于给定的一对值。(学生ID-它只是代码内部的,并且是从经过身份验证的提供商那里提取的。这就是代码行:

= Membership.GetUser.ProviderUserKey

所以上面的值将是用户登录的内部ID。

在web URL中作为参数公开的enc(外部)值,以及内部登录值。因此,(asp.net)后面的代码看起来像这样:

Dim strSQL As String
strSQL = "SELECT * from tblStudentMarks where StudentID = @pID " &
" AND TestResultsGID = @GID"
Dim cmdSQL As New SqlCommand(strSQL, GetCon)
cmdSQL.Parameters.Add("@pID", SqlDbType.Int).Value = Membership.GetUser.ProviderUserKey
cmdSQL.Parameters.Add("@GID", SqlDbType.VarChar).Value = Request.QueryString("enc")
Dim dReader As New SqlDataAdapter(cmdSQL)
Dim rstData As DataTable
dReader.Fill(rstData)

注意代码:

Request.QueryString("enc")

这允许后面的代码从URL中获取/获取参数(enc)。但是,正如我所说,JUST;enc";这里需要数字。从行中提取数据可能只需要这个值,但这将是一个打开的谷仓门大小的安全漏洞。

想想你的网上银行。

www.mybank.com/?客户编号=1234

好吧,如果我们只是使用上面的客户号码作为提取银行数据的手段,那么我可以去网站输入你的号码,或者别人的号码。

那么,这能奏效吗?您将需要获得一个enc值的列表(那个杂乱有趣的长字符串)。如果没有该参数,则无法在URL中设置该参数。

然而,正如我所说,你也很可能需要一些内部的";用户";未包含在公开URL中的登录id,也可以从数据库中获取那一行数据。

更重要的是?除非您是通过身份验证登录的用户,否则通常无法访问此类网页。换言之,该网页将只发送给已登录的用户-如果您没有登录,则服务器安全将自动不发送该网页,除非您是已登录用户。

因此,为了实现这一点,您需要联系网站开发人员,并获得";enc";价值观一旦有了该列表,就可以生成一些代码来处理该列表,并在URL中插入正确的参数。然而,您还需要询问该URL和参数值是否适用于登录用户,或者该URL和参数值是否仅适用于给定的登录用户。没有这些值,也不知道URL和参数是否适用于任何用户?(我对此表示怀疑),那么仅仅使用URL来获取这些值是行不通的。

让网站人员创建一个你可以调用的网络服务会更好,并且在一个命令中它会返回你需要的所有数据,而不是一遍又一遍地发送";enc";价值,你无论如何都没有。

最新更新